什么“SparseArray--指数中可能存在差距”是什么意思?

时间:2013-01-04 08:02:25

标签: java android data-structures containers sparse-array

开发一个使用哈希映射的程序,其中整数作为键,对象作为值。我继续得到Lint警告,告知SparseArray更有效率,当我读到这个Link给出的相同内容时,索引中可能存在间隙。这实际意味着什么,我无法得到。

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

请澄清我。

3 个答案:

答案 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