【问题标题】:What are the differences between ArrayList and ArrayMap?ArrayList 和 ArrayMap 有什么区别?
【发布时间】:2018-10-03 03:41:31
【问题描述】:

ArrayListArrayMap 之间的主要区别是什么?对于非线程应用程序,哪一个更高效、更快?
文档说ArrayMap是一个通用的key->value映射数据结构,那么ArrayMapHashMap有什么区别,都是一样的呢?

【问题讨论】:

  • ArrayMap 是一个映射(键 -> 值对)。 ArrayList 是一个列表(项目序列)。
  • JavaDoc tells you。它通常较慢,但旨在减少内存占用。
  • @NileshRathod 这个问题是关于另一个名为 ArrayMap 的类,所以它不相关。
  • @Michael 我已经添加了 另一个 现有问题。最后,它是关于列表与地图的。这是什么......之前解释过。

标签: java android arrays list data-structures


【解决方案1】:

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

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

仅供参考

ArrayMap is a generic key->value 映射数据结构,旨在比 traditional HashMap 更节省内存。

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

【讨论】:

  • ArrayMap和HashMap有什么区别?
  • @ucMedia ArrayMap 是一种通用的 key->value 映射数据结构,旨在比传统的 HashMap 更节省内存
【解决方案2】:

来自文档

ArrayList

  • ArrayList 类扩展 AbstractList 并实现 List 接口。 ArrayList 支持可按需增长的动态数组。
  • 创建数组列表时具有初始大小。当超过这个大小时,集合会自动放大。移除对象后,数组可能会缩小。

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

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

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

ArrayMap

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

Read Arraymap vs Hashmap

【讨论】:

  • Nilesh 说的是真的,但是要记住一件事,ArrayList(实现 List 接口)在其中有顺序,这意味着添加对象的方式就是对象的方式将在遍历集合时返回,另一方面 Map 没有自然顺序,因此当您将对象添加到该集合时,您不能保证在遍历集合时有特定的顺序,ei添加 1、2、3、4、5 时,您可能会得到 2、5、1、3、4。
猜你喜欢
  • 2014-06-29
  • 1970-01-01
  • 2011-02-28
  • 2013-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
相关资源
最近更新 更多