什么是一个ArrayList比Java中的数组更好?

6 java arrays collections data-structures

我什么时候应该在Java中使用ArrayList,何时应该使用数组?

dfa*_*dfa 8

一些差异:

  • 数组的大小是不可变的,你不能轻易删除和元素并删除空洞,而使用ArrayList很简单
  • 数组比ArrayList快(由JVM作为特殊对象直接处理)并且需要更少的内存
  • 数组有一个很好的语法来访问元素(例如a[i]vs a.get(i))
  • 数组与泛型不匹配(例如,您无法创建泛型数组)
  • 数组不能轻易地包装为ArrayList(例如Collections utils like checkedList,synchronizedListand unmodifiableList)
  • 声明ArrayListList你可以伊斯利交换实现了LinkedList,当你需要; 这个imho是普通阵列的最佳优势
  • 数组toString,equals并且hashCode很奇怪且容易出错,你必须使用Arrays类实用程序

  • class Foo <T> {T [] data = new T [10]; } < - 你做不到 (2认同)

Ada*_*ski 7

另外两点:

  • 您可能需要考虑使用数组来表示多个维度(例如矩阵).
  • 数组可用于存储基元,因此比使用ArrayList提供更紧凑的数据表示.


djn*_*jna 5

当您事先不知道所需的元素数量时,ArrayLists非常有用.简单示例:您正在阅读文本文件并构建您找到的所有单词的列表.你可以继续添加到你的数组列表,它会增长.

您需要预先声明其大小的数组.