ArrayList和ArrayMap有什么区别?

时间:2018-04-23 07:07:12

标签: java android arrays list data-structures

ArrayListArrayMap之间的主要区别是什么?对于非线程应用程序哪一个更有效,更快? 文档说ArrayMap是一个通用键 - >值映射数据结构,那么ArrayMapHashMap之间的差异是否相同?

2 个答案:

答案 0 :(得分:1)

ArrayMap将其映射保存在数组数据结构中 - 每个项的哈希码的整数数组,以及 key -> value pairs 的Object数组。

ArrayList是列表。 List接口的可调整大小的数组实现。实现所有可选列表操作,并允许所有元素,包括null。

<强> FYI

ArrayMap is a generic key->value 映射数据结构,旨在提高内存效率 traditional HashMap

  

请注意,ArrayMap实现并不适合   可能包含大量项目的数据结构。它是   通常比传统的HashMap慢,因为查找需要一个   二进制搜索和添加和删除需要插入和删除   数组中的条目。对于容纳数百件物品的容器,   性能差异不显着,小于50%。

答案 1 :(得分:1)

FROM DOCS

  

ArrayList

  • ArrayList类扩展AbstractList并实现List接口。 ArrayList支持可根据需要增长的动态数组。
  • 使用初始大小创建数组列表。超过此尺寸时,将自动放大该集合。删除对象后,阵列可能会缩小。

  • List接口的可调整大小的数组实现。实现所有可选列表操作,并允许所有元素,包括null。除了实现List接口之外,此类还提供了一些方法来操作内部用于存储列表的数组的大小。 (这个类大致相当于Vector,除了它是不同步的。)

  • size,isEmpty,get,set,iterator和listIterator操作以恒定时间运行。添加操作以分摊的常量时间运行,即添加n个元素需要O(n)时间。所有其他操作都以线性时间运行(粗略地说)。与LinkedList实现相比,常数因子较低。

  • 每个ArrayList实例都有一个容量。容量是用于存储列表中元素的数组的大小。它始终至少与列表大小一样大。当元素添加到ArrayList时,其容量会自动增加。除了添加元素具有恒定的摊销时间成本这一事实之外,未指定增长策略的详细信息。
  

ArrayMap

  • ArrayMap是一个通用的key-&gt;值映射数据结构,旨在提供比传统HashMap更高的内存效率,这个实现是平台的android.util.ArrayMap的一个版本,可用于旧版本的平台。它将其映射保持在数组数据结构中 - 每个项的哈希码的整数数组,以及键/值对的Object数组。这允许它避免为放入地图的每个条目创建额外的对象,并且它还试图更积极地控制这些数组的大小的增长(因为增长它们只需要复制数组中的条目,而不是重建哈希映射)。

Read Arraymap vs Hashmap