2

所以,为了性能,我应该使用 SparseArray 而不是 HashMap :

但是,SparseArray不是JCF的一部分,也没有实现Collectionnor 。,另一方面,实现并提供了在需要与JCF兼容的行为时可以使用的功能。例如,在各种自定义排序中使用它(对于值)。ListMapHashMapMapvalues()ArrayAdapter

我的问题是三个方面:

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

我正在寻找有深度的答案,我更喜欢参考权威网站。如果您认为您知道为什么SparseArray没有使用 JCF 接口实现,请提供一些支持,帮助我理解。如果您认为我应该使用SparseArray,请向我展示如何将其与ArrayAdapter自定义排序一起使用(首选Comparator -esque 解决方案)。如果有更好的选择,API 文档、库或教程的链接会很有帮助。如果您认为我应该坚持使用HashMaps,请解释为什么SparseArray接口的需求超过了性能优势。

4

2 回答 2

3

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

如果您发现增强的 SparseArray 有用,则始终欢迎使用高质量的补丁。

于 2013-04-23T17:12:26.210 回答
1

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

替代方案是以前的地图

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

于 2013-04-19T18:22:38.007 回答