android - 为什么 Android JFC 中的 SparseArray 不兼容?

标签 android collections sparse-array

所以,我应该 use SparseArray instead of HashMap为了性能:

但是,SparseArray不属于 JCF 的一部分并且没有实现Collection也不List也不MapHashMap另一方面,实现 Map并提供values()我可以在需要时使用 JCF - 兼容的行为。例如,在 ArrayAdapter 中使用它以及各种自定义排序(针对值)。

我的问题有三个:

  1. 为什么不SparseArray实现JCF接口(interface)?我是说, 不实现这些接口(interface)的动机是什么 鉴于大多数方法已经存在了?
  2. 是否有 SparseArray 的替代方案实现 JCF接口(interface) 或者可以轻松转换并保留SparseArray性能?
  3. HashMap确实有几百个元素 慢点?我的用户真的会注意到吗?

我正在寻找有深度的答案,并且我更喜欢引用权威网站。如果您认为您知道原因SparseArray没有使用 JCF 接口(interface)实现,请提供一些支持,帮助我理解。如果您认为我应该使用 SparseArray ,告诉我如何使用 ArrayAdapter和自定义排序(首选 Comparator 式解决方案)。如果有更好的替代方案,API 文档、库或教程的链接将会很有帮助。如果你认为我应该坚持 HashMap s,解释为什么SparseArray的性能优势接口(interface)的需求超过了它的重要性。

最佳答案

SparseArray.java 的第一个版本编写于 2006 年 5 月。在某些方面,它早于您所指的各种集合接口(interface)(在 Android 中,而不是 Java)。我的感觉是,它不支持各种 JCF 接口(interface),因为它们在编写代码时还不存在,并且从那以后没有人找到添加它们的理由。 (直到 2007 年初,它甚至才使用泛型。)

如果您发现增强的 SparseArray 很有用,那么我们始终欢迎高质量的补丁。

关于android - 为什么 Android JFC 中的 SparseArray 不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16111054/

相关文章:

android - 初始化数组列表的值

Android toggleButton.setOnText 和 .invalidate 不刷新文本

c# - 如何先按一个属性排序,然后再按另一个属性排序,而不考虑第一个属性的关系?

java - 项目没有添加到我的 ArrayList 中或者没有显示

java:稀疏位 vector

java - 不幸的是,解析应用程序已停止在后台连续工作

Android 一个 Activity 和多个带有新架构组件的 fragment

python - 设置 Python 的 collections.defaultdict 的默认字符串值

python - 磁盘上的 Pandas 稀疏数据框比密集版本大

javascript - JavaScript 中的稀疏数组和归约