所以,为了表现,我应该use SparseArray instead of HashMap:
但是,SparseArray
不属于JCF,不会实施Collection
,也不会List
或Map
。另一方面,HashMap
实现Map
并提供values()
,我可以在需要JCF兼容行为时使用{}。例如,在ArrayAdapter
中使用它以及各种自定义排序(对于值)。
我的问题有三个:
SparseArray
没有实现JCF接口?我的意思是,
没有实现这些接口的动机是什么?
大多数方法已经存在的事实?SparseArray
接口的JCF替代方案
或者可以轻松转换并保留SparseArray
表现?HashMap
和几百个元素真的那么多
慢点?我的用户真的会注意到吗?我正在寻找深度的答案,我更喜欢引用权威网站。如果你认为你知道为什么SparseArray
没有用JCF接口实现,请显示一些支持,帮助我理解。如果您认为我应该使用SparseArray
,请告诉我如何使用ArrayAdapter
和自定义排序(Comparator - 首选esque解决方案)。如果有更好的替代方案,那么指向API文档,库或教程的链接会很有帮助。如果您认为我应该坚持使用HashMap
,请解释为什么SparseArray
的性能优势超过了接口的需求。
答案 0 :(得分:3)
SparseArray.java的第一个版本是在2006年5月编写的。在某些方面,它会预先指定您所指的各种集合接口(在Android中,而不是Java中)。我的感觉是它不支持各种JCF接口,因为它们在编写代码时不存在,并且没有人找到理由来添加它们。 (它直到2007年初才使用泛型。)
如果您发现增强的SparseArray非常有用,那么欢迎使用高质量的补丁。
答案 1 :(得分:1)
也许是因为它是Map<对象,对象>但是SparseArray有原始键。
替代方案是以前的地图
对于3,一般来说,是的,但是应该衡量一下,看看在他的情况下是否属实