开发一个程序,它使用哈希映射,整数作为键,对象作为值。我不断收到 Lint 警告,通知 SparseArray 更有效,当我读到此链接中给出的相同内容时,索引中可能存在空白。这实际上意味着什么,我无法得到。
这是否意味着,如果我有像 1,5、10 这样的键,那么数组大小将为 3,索引为 1、5、10。(或)数组大小将为 11,存在 1、5、10 个索引的对象,其余为空?
请澄清一下。
开发一个程序,它使用哈希映射,整数作为键,对象作为值。我不断收到 Lint 警告,通知 SparseArray 更有效,当我读到此链接中给出的相同内容时,索引中可能存在空白。这实际上意味着什么,我无法得到。
这是否意味着,如果我有像 1,5、10 这样的键,那么数组大小将为 3,索引为 1、5、10。(或)数组大小将为 11,存在 1、5、10 个索引的对象,其余为空?
请澄清一下。
效率的提高SparseArray不仅是由于结构不同(正如其他答案所指出的那样),而且还因为您在用作键时避免了自动装箱。int
换句话说,当使用 eg 时map.get(1),您实际上是在执行map.get(Integer.valueOf(1)). 也就是说,您正在将原语转换int为Integer类实例。
有了SparseArray,就没有这种类型的转换,你只是在使用int. 查看自动装箱链接了解更多详情。
如果您查看SparseArray 的源代码,它会更有意义。它只有两个数组——一个包含键,另一个包含值;所以你的第一个推理是正确的。
您可以从示例中获得键 1、5 和 10,从而有效地产生 SparseArray长度为 3 的 a。