开发一个程序,它使用哈希映射,整数作为键,对象作为值。我不断收到 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。