稀疏布尔数组的明确目的是什么?[ 我为此推荐了官方安卓网站 ]

2022-09-02 19:51:16

我向Android文档网站推荐了“SparseBooleanArray”类,但仍然不知道该类的目的是什么??出于什么目的,我们需要使用该类??

这是文档链接 http://developer.android.com/reference/android/util/SparseBooleanArray.html


答案 1

根据我从文档中得到的内容,它是用于将整数值映射到布尔值的。

也就是说,如果要映射,如果对于某个 userID 应显示一个小部件,并且某些 userID 已被删除,则映射中将出现间隙。

这意味着,使用普通数组,您将创建一个 size=maxID 的数组,并在 index=userID 处向元素添加一个布尔值。然后,在迭代数组时,您必须在最坏的情况下迭代maxID元素,并且必须检查该索引是否没有布尔值(例如,ID不存在)。这确实是低效的。null

当使用哈希映射来执行此操作时,您可以将ID映射到布尔值,但是增加了为密钥生成哈希值的开销(这就是为什么它被称为*hash*map),这最终会首先损害CPU周期的性能以及RAM使用率。

因此,SparseBooleanArray似乎是处理这种情况的良好中间途径。

注意:尽管我的例子确实是人为的,但我希望它能说明情况。


答案 2

就像javadoc说的,这基本上意味着它就像一个映射,Integer作为键,布尔值作为值(Map)。SparseBooleanArrays map integers to booleans

但是,在这种特殊情况下使用效率更高It is intended to be more efficient than using a HashMap to map Integers to Booleans

希望这能清除您在描述中的任何问题。


推荐