📅  最后修改于: 2023-12-03 14:39:21.161000             🧑  作者: Mango
Java中提供了两种常见的实现List接口的类:ArrayList和LinkedList。
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底层使用双向链表来存储元素,因此它支持快速插入和删除操作,而且不需要像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支持快速插入和删除操作,但访问特定位置的元素需要遍历整个链表。选择哪一个取决于具体场景的需求。