DefaultKeyedVector和KeyedVector用法
来源:互联网 发布:java上线项目实战视频 编辑:程序博客网 时间:2024/06/05 08:53
原址
【用法示例】
在 Android Framework 源码中经常可以看到使用 DefaultKeyedVector 类型的容器。举个例子,在 AudioPolicyManagerBase.cpp 中我们可以看到如下代码:
可以看到,openOutputs 是一个 DefaultKeyedVector 键值对类型的容器。在代码中,使用 openOutputs.size() 来获取到该容器中的元素个数,使用 openOutputs.valueAt(i) 来获取到该容器的第 i 个元素的 value 值,使用 openOutputs.keyAt(i) 来获取到该容器的第 i 个元素的 key 值。而 outputs 是一个 SortedVector 类型的容器。在代码中,使用 outputs.add() 方法来将从 openOutputs 中获取到的 key 值添加到 outputs 容器中。【源码定义】
DefaultKeyedVector 类型容器实际上是一个模板类,继承自 KeyedVector 模板类,实现在 KeyedVector.h 文件中。除了 size()、valueAt()、keyAt()、add() 方法之外,其它常用的方法还有譬如 isEmpty()、replaceValueAt()、removeItem() 等,均可在源码中找到。
KeyedVector 类定义如下:
在 KeyedVctor 类声明的最后一行,我们看到实际上在内部将每个 key-value 键值对作为一个元素整体存入到 key_value_pair_t 模板结构体中,再把每个 key_value_pair_t 作为元素存入到一个名为 mVector 的 SortedVector 类型排序向量容器中。实际上在调用 valueAt()、keyAt() 等方法时,都是使用了 SortedVector 模板类和 key_value_pair_t 模板结构体的方法和特性。实现代码如下:
DefaultKeyedVector 类是从 KeyedVector 类继承而来的,其定义如下:
可以看到,相较于基类 KeyedVector 而言,DefaultKeyedVector 类只是添加了 valueFor() 方法和一个默认 value 值 mDefault。阅读全文
0 0
- DefaultKeyedVector和KeyedVector用法
- DefaultKeyedVector和KeyedVector用法
- #和##用法
- #和##用法
- performSelector用法和cancelPreviousPerformRequestsWithTarget用法
- UISlider用法和UIProgressView用法
- showModalDialog()和showModelessDialog()用法
- java_Hashtable和Enumeration用法
- SendMessage和Findwindow用法
- Log4配置和用法
- #和##的用法
- showModalDialog和showModelessDialog用法
- assert用法和NaN
- showModalDialog和showModelessDialog用法
- PCTFREE和PCTUSED用法
- SQLLDR用法和疑惑!
- showModalDialog和showModelessDialog用法
- showModalDialog和showModelessDialog用法
- DBoW2算法 精析
- oracle中多行比较运算符(in any all)的使用
- Kubernetes的Pod网络设置
- JDE BIP的开发流程
- Java中HashMap,LinkedHashMap,TreeMap的区别
- DefaultKeyedVector和KeyedVector用法
- PAT甲级 1001
- MVVM 与RAC 网络请求
- js/JavaScript正则表达式总结 --- 常用的JavaScript正则表达式需求总结
- Hive内置运算函数,自定义函数(UDF)和Transform
- Storm基础篇
- OpenCV实现基于Zernike矩的亚像素边缘检测
- syntax error, unexpected end of file
- python的列表求并集、