国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android14之DefaultKeyedVector實(shí)現(xiàn)(一百八十二)

這篇具有很好參考價(jià)值的文章主要介紹了Android14之DefaultKeyedVector實(shí)現(xiàn)(一百八十二)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

簡介: CSDN博客專家,專注Android/Linux系統(tǒng),分享多mic語音方案、音視頻、編解碼等技術(shù),與大家一起成長!

優(yōu)質(zhì)專欄:Audio工程師進(jìn)階系列原創(chuàng)干貨持續(xù)更新中……】??
優(yōu)質(zhì)專欄:多媒體系統(tǒng)工程師系列原創(chuàng)干貨持續(xù)更新中……】??

人生格言: 人生從來沒有捷徑,只有行動(dòng)才是治療恐懼和懶惰的唯一良藥.

更多原創(chuàng),歡迎關(guān)注:Android系統(tǒng)攻城獅

Android14之DefaultKeyedVector實(shí)現(xiàn)(一百八十二),Android系統(tǒng)調(diào)試系列,android14

1.前言

本篇目的:Android14之AudioFlinger如何使用和實(shí)現(xiàn)DefaultKeyedVector。

2.DefaultKeyedVector類介紹

  • DefaultKeyedVector類是Android開發(fā)中常用的一個(gè)數(shù)據(jù)結(jié)構(gòu),用于存儲鍵值對數(shù)據(jù)。它繼承自KeyedVector類,并在其基礎(chǔ)上添加了鍵值對的存儲和管理功能。DefaultKeyedVector類的主要作用是提供一個(gè)高效的方式來存儲和操作鍵值對數(shù)據(jù),并且在數(shù)據(jù)量較大時(shí)能夠保持較低的內(nèi)存占用和性能消耗。

  • 與普通的Map類相比,DefaultKeyedVector類在一些場景下具有更好的性能表現(xiàn)。由于Android系統(tǒng)中對SparseArray類進(jìn)行了優(yōu)化,它在處理稀疏數(shù)據(jù)(大部分?jǐn)?shù)據(jù)為空)時(shí)表現(xiàn)更加高效。因此,當(dāng)需要存儲大量鍵值對數(shù)據(jù),且大部分?jǐn)?shù)據(jù)為空時(shí),DefaultKeyedVector類是一個(gè)更好的選擇。

  • DefaultKeyedVector類提供了一系列方法來實(shí)現(xiàn)對鍵值對數(shù)據(jù)的操作,包括添加鍵值對、刪除鍵值對、獲取鍵值對數(shù)量、通過鍵獲取值等功能。此外,DefaultKeyedVector類還提供了遍歷鍵值對數(shù)據(jù)的方法,便于對數(shù)據(jù)進(jìn)行批量處理。

  • 在Android開發(fā)中,DefaultKeyedVector類常用于需要高效存儲大量鍵值對數(shù)據(jù)的場景,比如在ListView、RecyclerView等列表控件中,用于存儲列表項(xiàng)的數(shù)據(jù)。它能夠在保證性能的同時(shí),節(jié)約內(nèi)存消耗,適用于移動(dòng)設(shè)備資源有限的情況。

  • 在處理大量鍵值對數(shù)據(jù)時(shí)能夠提供較高的性能和較低的內(nèi)存占用。使用DefaultKeyedVector類能夠有效地提升應(yīng)用程序的性能和響應(yīng)速度,是開發(fā)中值得使用的工具之一。文章來源地址http://www.zghlxwxcb.cn/news/detail-805138.html

3.AudioFlinger如何使用DefaultKeyedVector

<1>.DefaultKeyedVector定義

template <typename KEY, typename VALUE>
class DefaultKeyedVector : public KeyedVector<KEY, VALUE>
{
public:
    inline                  DefaultKeyedVector(const VALUE& defValue = VALUE());
            const VALUE&    valueFor(const KEY& key) const;

private:
            VALUE                                           mDefault;
};

<2>.AudioFlinger使用DefaultKeyedVector

DefaultKeyedVector< audio_io_handle_t, sp<PlaybackThread> >  mPlaybackThreads;
sp<AudioFlinger::ThreadBase> thread = mPlaybackThreads.valueFor(ioHandle);

4.實(shí)例

#include <iostream>
#include <map>

template <typename KEY, typename VALUE>
class KeyedVector
{
};

template <typename KEY, typename VALUE>
class DefaultKeyedVector : public KeyedVector<KEY, VALUE>
{
public:
  inline DefaultKeyedVector(const VALUE& defValue = VALUE()) : mDefault(defValue){ }

  const VALUE& valueFor(const KEY& key) const{
    auto it = mMap.find(key);
    if (it != mMap.end()) {
      return it->second;
    } else {
      return mDefault;
    }
  }

  void setValueFor(const KEY& key, const VALUE& value)
  {
    mMap[key] = value;
  }

private:
  std::map<KEY, VALUE> mMap;
  VALUE  mDefault;
};

int main() {
  // 創(chuàng)建一個(gè) DefaultKeyedVector 對象,使用默認(rèn)值進(jìn)行初始化
  DefaultKeyedVector<int, std::string> vec;

  // 設(shè)置一個(gè)鍵的值
  vec.setValueFor(1, "one");
  vec.setValueFor(2, "two");

  // 獲取一個(gè)鍵的值
  std::string value = vec.valueFor(2);

  // 打印結(jié)果
  std::cout << "Value for key 1: " << vec.valueFor(1) << std::endl;
  std::cout << "Value for key 2: " << value << std::endl;

  return 0;
}

到了這里,關(guān)于Android14之DefaultKeyedVector實(shí)現(xiàn)(一百八十二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android之Android.bp文件格式語法(一百八十六)

    Android之Android.bp文件格式語法(一百八十六)

    簡介: CSDN博客專家,專注Android/Linux系統(tǒng),分享多mic語音方案、音視頻、編解碼等技術(shù),與大家一起成長! 優(yōu)質(zhì)專欄: Audio工程師進(jìn)階系列 【 原創(chuàng)干貨持續(xù)更新中…… 】?? 優(yōu)質(zhì)專欄: 多媒體系統(tǒng)工程師系列 【 原創(chuàng)干貨持續(xù)更新中…… 】?? 人生格言: 人生從來沒有捷徑

    2024年02月22日
    瀏覽(25)
  • 一百八十二、大數(shù)據(jù)離線數(shù)倉完整流程——步驟一、用Kettle從Kafka、MySQL等數(shù)據(jù)源采集數(shù)據(jù)然后寫入HDFS

    一百八十二、大數(shù)據(jù)離線數(shù)倉完整流程——步驟一、用Kettle從Kafka、MySQL等數(shù)據(jù)源采集數(shù)據(jù)然后寫入HDFS

    經(jīng)過6個(gè)月的奮斗,項(xiàng)目的離線數(shù)倉部分終于可以上線了,因此整理一下離線數(shù)倉的整個(gè)流程,既是大家提供一個(gè)案例經(jīng)驗(yàn),也是對自己近半年的工作進(jìn)行一個(gè)總結(jié)。 項(xiàng)目行業(yè)屬于交通行業(yè),因此數(shù)據(jù)具有很多交通行業(yè)的特征,比如轉(zhuǎn)向比數(shù)據(jù)就是統(tǒng)計(jì)車輛左轉(zhuǎn)、右轉(zhuǎn)、直行

    2024年02月07日
    瀏覽(20)
  • C++之類之間訪問函數(shù)指針(一百八十一)

    C++之類之間訪問函數(shù)指針(一百八十一)

    簡介: CSDN博客專家,專注Android/Linux系統(tǒng),分享多mic語音方案、音視頻、編解碼等技術(shù),與大家一起成長! 優(yōu)質(zhì)專欄: Audio工程師進(jìn)階系列 【 原創(chuàng)干貨持續(xù)更新中…… 】?? 人生格言: 人生從來沒有捷徑,只有行動(dòng)才是治療恐懼和懶惰的唯一良藥. 更多原創(chuàng),歡迎關(guān)注:An

    2024年02月12日
    瀏覽(24)
  • 高通sm7250與765G芯片是什么關(guān)系?(一百八十一)

    高通sm7250與765G芯片是什么關(guān)系?(一百八十一)

    簡介: CSDN博客專家,專注Android/Linux系統(tǒng),分享多mic語音方案、音視頻、編解碼等技術(shù),與大家一起成長! 優(yōu)質(zhì)專欄: Audio工程師進(jìn)階系列 【 原創(chuàng)干貨持續(xù)更新中…… 】?? 優(yōu)質(zhì)專欄: 多媒體系統(tǒng)工程師系列 【 原創(chuàng)干貨持續(xù)更新中…… 】?? 人生格言: 人生從來沒有捷徑

    2024年01月18日
    瀏覽(31)
  • XUbuntu22.04之解決藍(lán)牙鼠標(biāo)不停掉線問題(追兇過程)(一百八十五)

    XUbuntu22.04之解決藍(lán)牙鼠標(biāo)不停掉線問題(追兇過程)(一百八十五)

    簡介: CSDN博客專家,專注Android/Linux系統(tǒng),分享多mic語音方案、音視頻、編解碼等技術(shù),與大家一起成長! 優(yōu)質(zhì)專欄: Audio工程師進(jìn)階系列 【 原創(chuàng)干貨持續(xù)更新中…… 】?? 人生格言: 人生從來沒有捷徑,只有行動(dòng)才是治療恐懼和懶惰的唯一良藥. 更多原創(chuàng),歡迎關(guān)注:An

    2024年02月16日
    瀏覽(27)
  • XUbuntu22.04之Linux剪切板和selection primary區(qū)域(一百八十七)

    XUbuntu22.04之Linux剪切板和selection primary區(qū)域(一百八十七)

    簡介: CSDN博客專家,專注Android/Linux系統(tǒng),分享多mic語音方案、音視頻、編解碼等技術(shù),與大家一起成長! 優(yōu)質(zhì)專欄: Audio工程師進(jìn)階系列 【 原創(chuàng)干貨持續(xù)更新中…… 】?? 人生格言: 人生從來沒有捷徑,只有行動(dòng)才是治療恐懼和懶惰的唯一良藥. 更多原創(chuàng),歡迎關(guān)注:An

    2024年02月15日
    瀏覽(31)
  • 一百八十九、ClickHouse——在海豚調(diào)度器中執(zhí)行ClickHouse建庫建表語句

    一百八十九、ClickHouse——在海豚調(diào)度器中執(zhí)行ClickHouse建庫建表語句

    由于Hive處理好的結(jié)果數(shù)據(jù)要同步到ClickHouse中,因此需要在在海豚調(diào)度器中執(zhí)行ClickHouse的ADS層的建庫建表語句 1、直接在海豚中創(chuàng)建執(zhí)行SQL文件腳本的工作流 (1)第一步,在資源中心上傳ADS層的建庫建表SQL文件 (2)第二步,在項(xiàng)目里建工作流,添加運(yùn)行SQL文件的腳本 #! /b

    2024年02月07日
    瀏覽(30)
  • 一百八十八、Hive——HiveSQL查詢表中的日期是星期幾(親測,附截圖)

    一百八十八、Hive——HiveSQL查詢表中的日期是星期幾(親測,附截圖)

    指標(biāo)需要查詢以工作日和周末維度的數(shù)據(jù)統(tǒng)計(jì),因此需要根據(jù)數(shù)據(jù)的日期判斷這一天屬于星期幾,周一到周五為工作日,周六到周日為周末 今天是2023年9月26日,周二! 2023-05-02為任意一天的周二,不是選周一或者周日,這個(gè)可以自行驗(yàn)證!

    2024年02月07日
    瀏覽(29)
  • 一百八十六、大數(shù)據(jù)離線數(shù)倉完整流程——步驟五、在Hive的DWS層建動(dòng)態(tài)分區(qū)表并動(dòng)態(tài)加載數(shù)據(jù)

    一百八十六、大數(shù)據(jù)離線數(shù)倉完整流程——步驟五、在Hive的DWS層建動(dòng)態(tài)分區(qū)表并動(dòng)態(tài)加載數(shù)據(jù)

    經(jīng)過6個(gè)月的奮斗,項(xiàng)目的離線數(shù)倉部分終于可以上線了,因此整理一下離線數(shù)倉的整個(gè)流程,既是大家提供一個(gè)案例經(jīng)驗(yàn),也是對自己近半年的工作進(jìn)行一個(gè)總結(jié)。 1、Hive的DWS層建庫建表語句 --如果不存在則創(chuàng)建hurys_dc_dws數(shù)據(jù)庫 create database if not exists hurys_dc_dws; --使用hurys_

    2024年02月07日
    瀏覽(20)
  • 一百八十七、大數(shù)據(jù)離線數(shù)倉完整流程——步驟六、在ClickHouse的ADS層建表并用Kettle同步Hive中DWS層的結(jié)果數(shù)據(jù)

    一百八十七、大數(shù)據(jù)離線數(shù)倉完整流程——步驟六、在ClickHouse的ADS層建表并用Kettle同步Hive中DWS層的結(jié)果數(shù)據(jù)

    經(jīng)過6個(gè)月的奮斗,項(xiàng)目的離線數(shù)倉部分終于可以上線了,因此整理一下離線數(shù)倉的整個(gè)流程,既是大家提供一個(gè)案例經(jīng)驗(yàn),也是對自己近半年的工作進(jìn)行一個(gè)總結(jié)。 1、ClickHouse的ADS層建庫建表語句 --如果不存在則創(chuàng)建hurys_dc_ads數(shù)據(jù)庫 create database if not exists hurys_dc_ads; --使用

    2024年02月07日
    瀏覽(36)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包