Java ArrayList和ArrayMap之间有什么区别?

Java ArrayList和ArrayMap之间有什么区别?,java,android,arrays,list,data-structures,Java,Android,Arrays,List,Data Structures,ArrayList和ArrayMap之间的主要区别是什么?对于非线程应用程序,哪一个更高效、更快? 文档说,ArrayMap是一个通用的键->值映射数据结构,那么ArrayMap和HashMap之间的区别是什么,两者都是相同的?将其映射保持在一个数组数据结构中—每个项的哈希代码的整数数组,和一个对象数组,该数组由键对和值对组成 列表在哪里。列表接口的可调整大小的数组实现。实现所有可选的列表操作,并允许所有元素,包括null FYI 数组映射是一种通用的键->值映射数据结构,其设计比传统的Hash

ArrayList
ArrayMap
之间的主要区别是什么?对于非线程应用程序,哪一个更高效、更快?
文档说,
ArrayMap
是一个通用的键->值映射数据结构,那么
ArrayMap
HashMap
之间的区别是什么,两者都是相同的?

将其映射保持在一个数组数据结构中—每个项的哈希代码的整数数组,和一个对象数组,该数组由键对和值对组成

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

FYI

数组映射是一种通用的键->值
映射数据结构,其设计比传统的HashMap内存效率更高

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

来自文档

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

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

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

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

  • ArrayMap是一种通用的键->值映射数据结构,其设计比传统的HashMap更具内存效率,此实现是平台的android.util.ArrayMap的一个版本,可在较旧版本的平台上使用。它将其映射保存在数组数据结构中——每个项的哈希代码的整数数组和键/值对的对象数组。这允许它避免为放入映射的每个条目创建额外的对象,并且它还尝试更积极地控制这些数组大小的增长(因为增长它们只需要复制数组中的条目,而不需要重建哈希映射)

ArrayMap
是一个映射(键->值对)
ArrayList
是一个列表(一系列项目)。@ucMedia。它通常比较慢,但旨在减少内存占用。@NileshRathod这个问题是关于另一个名为
ArrayMap
的类的,所以它不相关。@Michael我已经添加了另一个现有问题。最后,它是关于列表与地图的比较。这是。。。前面已经解释过。ArrayMap和HashMap之间有什么区别?@ucMedia ArrayMap是一种通用的键->值映射数据结构,其设计比传统的HashMap@ucMediaNilesh所说的是对的,但是有一件事需要记住,ArrayList(它实现了List接口)它具有顺序,这意味着添加对象的方式就是在遍历集合时返回对象的方式,而映射则没有自然顺序,因此在向该集合添加对象时,在遍历集合时,不能保证特定的顺序,例如,在添加1、2、3、4、5时,可能会得到2、5、1、3、4。