📜  arraylist 到linkedlist java (1)

📅  最后修改于: 2023-12-03 14:39:21.161000             🧑  作者: Mango

ArrayList和LinkedList在Java中

Java中提供了两种常见的实现List接口的类:ArrayList和LinkedList。

ArrayList

ArrayList底层使用数组来存储元素,因此它支持快速随机访问,而且数组大小可以动态增长。

List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Orange");
System.out.println(list.get(1)); // 输出 "Banana"

上面的代码创建了一个ArrayList并向其中添加三个元素,然后使用get方法访问索引为1的元素。

时间复杂度

ArrayList的时间复杂度如下:

| 操作 | 时间复杂度 | | -------------- | ---------- | | get(int index) | O(1) | | add(E e) | O(1) | | remove(int index) | O(n) |

LinkedList

LinkedList底层使用双向链表来存储元素,因此它支持快速插入和删除操作,而且不需要像ArrayList一样移动大量元素。但是,访问特定位置的元素需要遍历整个链表直到找到相应的位置。

List<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
list.add("Orange");
System.out.println(list.get(1)); // 输出 "Banana"

上面的代码创建了一个LinkedList并向其中添加三个元素,然后使用get方法访问索引为1的元素。

时间复杂度

LinkedList的时间复杂度如下:

| 操作 | 时间复杂度 | | -------------- | ---------- | | get(int index) | O(n) | | add(E e) | O(1) | | remove(int index) | O(n) |

选择哪一个?

当需要快速随机访问元素时,应该选择ArrayList。但是,如果经常需要在列表中插入或删除元素,应该选择LinkedList。

总结

ArrayList和LinkedList在Java中都是常用的List实现类。ArrayList支持快速随机访问和动态增长数组大小,而LinkedList支持快速插入和删除操作,但访问特定位置的元素需要遍历整个链表。选择哪一个取决于具体场景的需求。