Java 中 List 接口的学习笔记
1. 什么是 List?
在 Java 中,List
是一个接口,属于 Java Collections Framework。它表示一个有序的集合,可以包含重复元素。List
接口允许通过索引访问元素,提供了多种实现方式,如 ArrayList
和 LinkedList
。
2. List 的特点
- 有序性:元素的插入顺序被保存,可以通过索引访问元素。
- 可重复性:可以存放重复的元素。
- 动态大小:与数组不同,
List
的大小可以动态调整。
3. List 的常用实现类
3.1 ArrayList
- 基于动态数组实现。
- 随机访问速度快,插入和删除操作较慢(特别是在中间位置)。
- 适合于频繁查询,但不频繁修改的场景。
示例代码:
import java.util.ArrayList;
ArrayList<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
list.add("Hello"); // 允许重复元素
System.out.println(list.get(0)); // 输出: Hello
System.out.println(list.size()); // 输出: 3
3.2 LinkedList
- 基于双向链表实现。
- 插入和删除操作效率高,特别是在中间位置。
- 随机访问速度慢,因为需要遍历链表。
示例代码:
import java.util.LinkedList;
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("Hello");
linkedList.add("World");
linkedList.addFirst("Start"); // 在链表头部插入
System.out.println(linkedList.get(1)); // 输出: Hello
System.out.println(linkedList.size()); // 输出: 3
4. List 接口的常用方法
当然可以!以下是关于 Java 中 List
接口的常用方法的详细介绍,包括代码示例。
4. List 接口的常用方法及示例
4.1 添加元素
add(E e)
:在列表末尾添加元素。
import java.util.ArrayList;
ArrayList<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
System.out.println(list); // 输出: [Apple, Banana, Cherry]
add(int index, E element)
:在指定位置插入元素。
list.add(1, "Orange"); // 在索引1的位置插入元素
System.out.println(list); // 输出: [Apple, Orange, Banana, Cherry]
4.2 获取元素
get(int index)
:返回指定位置的元素。
String fruit = list.get(2);
System.out.println(fruit); // 输出: Banana
4.3 修改元素
set(int index, E element)
:用指定元素替换指定位置的元素。
list.set(0, "Grapes"); // 将索引0的元素替换为"Grapes"
System.out.println(list); // 输出: [Grapes, Orange, Banana, Cherry]
4.4 删除元素
remove(int index)
:移除指定位置的元素。
list.remove(1); // 移除索引1的元素
System.out.println(list); // 输出: [Grapes, Banana, Cherry]
remove(Object obj)
:移除列表中第一次出现的指定元素。
list.remove("Banana"); // 移除元素"Banana"
System.out.println(list); // 输出: [Grapes, Cherry]
4.5 查找元素
indexOf(Object o)
:返回指定元素第一次出现的索引,若不存在则返回 -1。
int index = list.indexOf("Cherry");
System.out.println(index); // 输出: 1
contains(Object o)
:检查列表中是否包含指定元素。
boolean containsGrapes = list.contains("Grapes");
System.out.println(containsGrapes); // 输出: true
4.6 其他方法
size()
:返回列表中的元素数量。
int size = list.size();
System.out.println(size); // 输出: 2
isEmpty()
:检查列表是否为空。
boolean isEmpty = list.isEmpty();
System.out.println(isEmpty); // 输出: false
clear()
:清空列表。
list.clear();
System.out.println(list); // 输出: []
toArray()
:将列表转化为数组。
list.add("Mango");
list.add("Peach");
Object[] fruitsArray = list.toArray();
for (Object fruit : fruitsArray) {
System.out.println(fruit); // 输出: Mango, Peach
}
5. List 的时间复杂度
操作 | ArrayList | LinkedList |
---|---|---|
添加元素 (末尾) | O(1) | O(1) |
添加元素 (指定位置) | O(n) | O(n) |
获取元素 | O(1) | O(n) |
删除元素 | O(n) | O(n) |
查找元素 | O(n) | O(n) |
6. 总结
List
接口是 Java 集合框架的重要组成部分,提供了灵活的动态数组和链表实现。通过理解不同实现的特点及其适用场景,能够帮助我们在编程中做出更合适的选择。
练习
- 使用
ArrayList
实现一个简单的待办事项列表,支持添加、删除和查看待办事项。 - 使用
LinkedList
实现一个简单的浏览历史记录,支持前进和后退操作。
通过这些练习,你将加深对 Java 中 List
接口的理解和使用。希望这份笔记能帮助你更好地学习和掌握 Java 中的集合!
原文地址:https://blog.csdn.net/Working_ccll/article/details/144328481
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!