Java 中 List 接口的学习笔记

1. 什么是 List?

在 Java 中,List 是一个接口,属于 Java Collections Framework。它表示一个有序的集合,可以包含重复元素。List 接口允许通过索引访问元素,提供了多种实现方式,如 ArrayListLinkedList

2. List 的特点

  • 有序性:元素的插入顺序被保存,可以通过索引访问元素。
  • 可重复性:可以存放重复的元素。
  • 动态大小 :与数组不同,List 的大小可以动态调整。

3. List 的常用实现类

3.1 ArrayList

  • 基于动态数组实现。
  • 随机访问速度快,插入和删除操作较慢(特别是在中间位置)。
  • 适合于频繁查询,但不频繁修改的场景。

示例代码

java 复制代码
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

  • 基于双向链表实现。
  • 插入和删除操作效率高,特别是在中间位置。
  • 随机访问速度慢,因为需要遍历链表。

示例代码

java 复制代码
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):在列表末尾添加元素。
java 复制代码
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):在指定位置插入元素。
java 复制代码
list.add(1, "Orange"); // 在索引1的位置插入元素
System.out.println(list); // 输出: [Apple, Orange, Banana, Cherry]

4.2 获取元素

  • get(int index):返回指定位置的元素。
java 复制代码
String fruit = list.get(2);
System.out.println(fruit); // 输出: Banana

4.3 修改元素

  • set(int index, E element):用指定元素替换指定位置的元素。
java 复制代码
list.set(0, "Grapes"); // 将索引0的元素替换为"Grapes"
System.out.println(list); // 输出: [Grapes, Orange, Banana, Cherry]

4.4 删除元素

  • remove(int index):移除指定位置的元素。
java 复制代码
list.remove(1); // 移除索引1的元素
System.out.println(list); // 输出: [Grapes, Banana, Cherry]
  • remove(Object obj):移除列表中第一次出现的指定元素。
java 复制代码
list.remove("Banana"); // 移除元素"Banana"
System.out.println(list); // 输出: [Grapes, Cherry]

4.5 查找元素

  • indexOf(Object o):返回指定元素第一次出现的索引,若不存在则返回 -1。
java 复制代码
int index = list.indexOf("Cherry");
System.out.println(index); // 输出: 1
  • contains(Object o):检查列表中是否包含指定元素。
java 复制代码
boolean containsGrapes = list.contains("Grapes");
System.out.println(containsGrapes); // 输出: true

4.6 其他方法

  • size():返回列表中的元素数量。
java 复制代码
int size = list.size();
System.out.println(size); // 输出: 2
  • isEmpty():检查列表是否为空。
java 复制代码
boolean isEmpty = list.isEmpty();
System.out.println(isEmpty); // 输出: false
  • clear():清空列表。
java 复制代码
list.clear();
System.out.println(list); // 输出: []
  • toArray():将列表转化为数组。
java 复制代码
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 集合框架的重要组成部分,提供了灵活的动态数组和链表实现。通过理解不同实现的特点及其适用场景,能够帮助我们在编程中做出更合适的选择。

练习

  1. 使用 ArrayList 实现一个简单的待办事项列表,支持添加、删除和查看待办事项。
  2. 使用 LinkedList 实现一个简单的浏览历史记录,支持前进和后退操作。

通过这些练习,你将加深对 Java 中 List 接口的理解和使用。希望这份笔记能帮助你更好地学习和掌握 Java 中的集合!

相关推荐
keke1028 分钟前
Java【14_2】接口(Comparable和Comparator)、内部类
java·开发语言
CN.LG38 分钟前
Java 乘号来重复字符串的功能
java·开发语言
萌新下岸多多关照43 分钟前
Java中synchronized 关键字
java·开发语言
中国lanwp1 小时前
使用Maven部署WebLogic应用
java·maven
开开心心就好1 小时前
Word图片格式调整与转换工具
java·javascript·spring·eclipse·pdf·word·excel
云海听雷1 小时前
C语言中字符串函数的详细讲解
c语言·笔记·学习
CGG921 小时前
【单例模式】
android·java·单例模式
苦学编程的谢1 小时前
多线程代码案例-1 单例模式
java·开发语言·单例模式
yaoxin5211232 小时前
80. Java 枚举类 - 使用枚举实现单例模式
java·开发语言·单例模式
人类恶.2 小时前
C 语言学习笔记(数组)
c语言·笔记·学习