📜  比较Java中的两个 ArrayList(1)

📅  最后修改于: 2023-12-03 15:26:54.322000             🧑  作者: Mango

比较Java中的两个 ArrayList

Java中的ArrayList是一个实现了List接口的可调整大小的动态数组。我们可以使用add()方法在其中添加元素,使用get()方法按索引获取元素等等。 在Java中有两种实现ArrayList的类,它们分别是ArrayList和LinkedList。虽然它们都实现了List接口,但它们之间有很多不同之处。让我们来看一下。

ArrayList

ArrayList是基于动态数组的实现,它可以自动扩展以容纳新元素。它支持随机访问,这意味着您可以按索引访问任何元素,并以常量时间执行此操作。 在ArrayList中插入或删除元素意味着将元素移动以填充或填充空间。 因此,当需要频繁添加或删除元素时,ArrayList的性能会变差,因为这些操作需要移动数组的许多元素。

示例代码

以下是ArrayList的创建示例:

ArrayList<String> arrayList = new ArrayList<>();

添加元素:

arrayList.add("Java");
arrayList.add("is");
arrayList.add("awesome");

按索引获取元素:

String element = arrayList.get(1); // 返回"is"
LinkedList

LinkedList是基于链表的实现,它不需要将元素移动以添加或删除它们。 相反,每个元素都指向下一个元素。 这意味着在LinkedList中添加或删除元素比ArrayList更快。LinkedList还支持随机访问,但它需要遍历链表以前往相应的索引,因此索引查找可能比ArrayList慢。

示例代码

以下是创建LinkedList的示例:

LinkedList<String> linkedList = new LinkedList<>();

添加元素:

linkedList.add("Java");
linkedList.add("is");
linkedList.add("awesome");

按索引获取元素:

String element = linkedList.get(1); // 返回"is"
总结

ArrayList和LinkedList在实现方式和性能方面都有所不同。 ArrayList适用于需要频繁访问元素或按索引访问元素的场景。 LinkedList适用于需要频繁添加或删除元素的场景。 通过理解ArrayList和LinkedList之间的区别,您可以选择正确的实现来满足您的需求。