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

时间:2013-04-19 18:16:00

标签: android collections sparse-array

所以,为了表现,我应该use SparseArray instead of HashMap

但是,SparseArray不属于JCF,不会实施Collection,也不会ListMap。另一方面,HashMap实现Map并提供values(),我可以在需要JCF兼容行为时使用{}。例如,在ArrayAdapter中使用它以及各种自定义排序(对于值)。

我的问题有三个:

  1. 为什么SparseArray没有实现JCF接口?我的意思是, 没有实现这些接口的动机是什么? 大多数方法已经存在的事实?
  2. 是否有实现SparseArray接口的JCF替代方案 或者可以轻松转换并保留SparseArray表现?
  3. HashMap和几百个元素真的那么多 慢点?我的用户真的会注意到吗?
  4. 我正在寻找深度的答案,我更喜欢引用权威网站。如果你认为你知道为什么SparseArray没有用JCF接口实现,请显示一些支持,帮助我理解。如果您认为我应该使用SparseArray,请告诉我如何使用ArrayAdapter和自定义排序(Comparator - 首选esque解决方案)。如果有更好的替代方案,那么指向API文档,库或教程的链接会很有帮助。如果您认为我应该坚持使用HashMap,请解释为什么SparseArray的性能优势超过了接口的需求。

2 个答案:

答案 0 :(得分:3)

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

如果您发现增强的SparseArray非常有用,那么欢迎使用高质量的补丁。

答案 1 :(得分:1)

也许是因为它是Map<对象,对象>但是SparseArray有原始键。

替代方案是以前的地图

对于3,一般来说,是的,但是应该衡量一下,看看在他的情况下是否属实