开发一个使用哈希映射的程序,其中整数作为键,对象作为值。我继续得到Lint警告,告知SparseArray更有效率,当我读到这个Link给出的相同内容时,索引中可能存在间隙。这实际意味着什么,我无法得到。
是否意味着,如果我有像1,5,10这样的键,那么数组大小将为3,索引为1,5,10。(或者)数组大小为11,对象存在1,5,10个索引和休息是空的吗?
请澄清我。
答案 0 :(得分:4)
SparseArray
的效率提高不仅仅是由于结构不同(正如其他答案所指出的那样),而且还因为你在使用{{1}时避免使用autoboxing这一事实作为一把钥匙。
换句话说,当使用例如int
,您实际上相当于map.get(1)
。也就是说,您正在将map.get(Integer.valueOf(1))
原语转换为int
类实例。
使用Integer
时,没有此类型的转换,您只需使用SparseArray
。查看自动装箱链接以获取更多详细信息。
答案 1 :(得分:2)
如果你看一下source code for SparseArray,那就更有意义了。它只有两个数组 - 一个包含键,另一个包含值;所以你的第一个推理是正确的。
答案 2 :(得分:0)
你可以拥有钥匙1,5和从您的示例中得到10,有效地生成长度为3的SparseArray
。