Android 树映射和阵列映射的实际差异
在java中,a用于字典,其中键保持排序。 在android上,一个被用作一个“内存高效”的HashMap,其中(我推断)键保持排序,因为 查找需要二进制搜索,添加和删除需要在数组中插入和删除条目 内存使用: …此容器旨在更好地平衡内存使用 它将其映射保存在数组数据结构中——每个项的哈希代码的整数数组和键/值对的对象数组。这使得它不必为地图中的每个条目创建额外的对象 …当项目从阵列中移除时,它将收缩其阵列 我们可以合理地得出结论,Android 树映射和阵列映射的实际差异,android,dictionary,data-structures,Android,Dictionary,Data Structures,在java中,a用于字典,其中键保持排序。 在android上,一个被用作一个“内存高效”的HashMap,其中(我推断)键保持排序,因为 查找需要二进制搜索,添加和删除需要在数组中插入和删除条目 内存使用: …此容器旨在更好地平衡内存使用 它将其映射保存在数组数据结构中——每个项的哈希代码的整数数组和键/值对的对象数组。这使得它不必为地图中的每个条目创建额外的对象 …当项目从阵列中移除时,它将收缩其阵列 我们可以合理地得出结论,ArrayMap不适合存放约1000多件物品: 对于容纳数百件物品
ArrayMap
不适合存放约1000多件物品:
对于容纳数百件物品的容器,性能差异不显著,小于50%
请注意,此实现并不适用于可能包含大量项的数据结构
一般而言,使用其中一种方法的额外成本/收益是什么
ArrayMap
实现线程安全吗(因此速度较慢)数组映射中的排序
ArrayMap的内存消耗量是这两个内存消耗量中最小的。两者的检索复杂度都是O(logn)。在理论上,插入和删除对于ARARYMAP来说有点慢,因为它们类似于插入或删除数组中间的元素:技术上它是O(n),但它使用一个调用Stase.AlayAc文()来很快地移动所有的值。因此,如果您需要经常修改映射,ArrayMap可能不是最佳选择,但对于所有其他用例,它都非常有用。因此,最好将其用作不可变或不经常更改的查找表,而不是用作处理项目的数据结构