数组和 ArrayLists - 优点和缺点

Arrays and ArrayLists - Pros and Cons

在Java中,有Arrays和ArrayLists。

// Creation of Array of length 3
Object[] array = new Object[3];

// Creation of ArrayList
ArrayList<Object> arrayList = new ArrayList<>();

据我所知,Arrays 和 ArrayLists 之间存在某些差异。例如,可以轻松地将条目添加到 ArrayList,但不能使用数组。

我发现的另一个区别是 ArrayList 不能包含原语。 为什么这很重要,因为我可以轻松地将 int 转换为 Integer 对象?

int[] array = {1,2,3}; // Can't add another entry.

ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);

arrayList.add(4); // Dynamic in size

根据我在 Google 上搜索到的内容,使用 ArrayList 代替普通数组有很多好处,但是 ArrayList 的缺点是什么?在什么情况下应该使用 Array 而不是 ArrayList? 此外,如果没有使用 ArrayLists 的缺点,为什么 Java 开发人员不用 ArrayLists 替换数组?

任何解释将不胜感激。

在我看来,与原始数组相比,使用 ArrayList 的主要优点是其不受限制的大小、API 方法以及从 Java 1.5 开始使用泛型。 ArrayList 由原始数组支持,所以从技术上讲,如果您想自己维护一大堆代码,您 可以 使用原始数组,但为什么要这样做那,什么时候开箱即用地提供了您可能正在寻找的东西?此外,由于 ArrayListCollection,除其他外(List 等),它为您打开了丰富的库函数,包括本机和第三方库函数。

当您只需要原始数组时使用 ArrayList 的缺点(例如,您需要固定长度的数据结构,不需要泛型并且不需要任何 API 功能) 是创建和维护成本更高。