所以,我应该 use SparseArray instead of HashMap为了性能:
但是,SparseArray
不属于 JCF 的一部分并且没有实现Collection
也不List
也不Map
。 HashMap
另一方面,实现 Map
并提供values()
我可以在需要时使用 JCF - 兼容的行为。例如,在 ArrayAdapter
中使用它以及各种自定义排序(针对值)。
我的问题有三个:
- 为什么不
SparseArray
实现JCF接口(interface)?我是说, 不实现这些接口(interface)的动机是什么 鉴于大多数方法已经存在了? - 是否有
SparseArray
的替代方案实现 JCF接口(interface) 或者可以轻松转换并保留SparseArray
性能? - 是
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/