2

开发一个程序,它使用哈希映射,整数作为键,对象作为值。我不断收到 Lint 警告,通知 SparseArray 更有效,当我读到此链接中给出的相同内容时,索引中可能存在空白。这实际上意味着什么,我无法得到。

这是否意味着,如果我有像 1,5、10 这样的键,那么数组大小将为 3,索引为 1、5、10。(或)数组大小将为 11,存在 1、5、10 个索引的对象,其余为空?

请澄清一下。

4

3 回答 3

4

效率的提高SparseArray不仅是由于结构不同(正如其他答案所指出的那样),而且还因为您在用作键时避免了自动装箱。int

换句话说,当使用 eg 时map.get(1),您实际上是在执行map.get(Integer.valueOf(1)). 也就是说,您正在将原语转换intInteger类实例。

有了SparseArray,就没有这种类型的转换,你只是在使用int. 查看自动装箱链接了解更多详情。

于 2013-01-04T08:12:21.240 回答
2

如果您查看SparseArray 的源代码,它会更有意义。它只有两个数组——一个包含键,另一个包含值;所以你的第一个推理是正确的。

于 2013-01-04T08:08:16.910 回答
0

您可以从示例中获得键 1、5 和 10,从而有效地产生 SparseArray长度为 3 的 a。

于 2013-01-04T08:06:37.780 回答