Java List 接口
List 又称列表,是一个有序集合。在本教程中,我们将了解 Java 中的 List 接口及其方法。
List 又称列表,是一个有序集合。在本教程中,我们将了解 Java 中的 List 接口及其方法。
在 Java 中, List
接口是一个有序集合,它允许我们按顺序存储和访问元素。它扩展了 Collection
接口。
List 接口的实现类
由于 List
是一个接口,我们不能从它创建对象。
下面的这些类都实现了 List
接口,我们可以直接使用这些类:
这些类都定义在集合框架中并实现了 List
接口。
如何创建列表?
在 Java 中,我们必须导入 java.util.List
包才能使用 List
。由于 List
是接口,我们无法直接实例化 List
对象,我们需要用到 List
接口的实现类。
以下是创建 List
对象的几种方法:
-
直接使用
List
接口的实现类ArrayList
和LinkedList
是 2 个最常用的List
接口的实现类。请看以下示例:List<String> list1 = new ArrayList<>(); List<String> list2 = new LinkedList<>();
-
使用
Arrays.asList()
方法Arrays.asList()
返回一个固定大小的列表。如下:List<Integer> numbers = Arrays.asList(1, 2, 3); List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
注意:
Arrays.asList()
返回一个固定大小的列表,能修改列表中的值,不能增加和删除元素,否则会报错。 -
使用
List.of()
方法List.of()
返回一个不可修改的列表。如下:List<Integer> numbers = List.of(1, 2, 3); List<Integer> numbers = List.of(1, 2, 3, 4);
注意:``List.of()` 返回一个不可修改的列表,不能修改列表中的值,也不能增加和删除元素,否则会报错。
-
Collections
工具类中提供的了几种方法创建特殊的列表Collections.emptyList()
: 创建一个不可修改的空列表Collections.singletonList(o)
: 创建一个只包含一个对象的不可修改的列表Collections.unmodifiableList(list)
: 将一个列表转变为不可修改的列表
在这里,我们已经创建了 ArrayList
类型的对象 list1
和 LinkedList
类型的对象 list2
。
列表方法
List
接口继承 Collection
接口的所有方法,又扩展了一些其他的方法。
以下是 List
接口的一些常用方法:
add()
- 向列表中添加一个元素addAll()
- 将一个列表的所有元素添加到另一个列表get()
- 有助于从列表中随机访问元素iterator()
- 返回可用于顺序访问列表元素的迭代器对象set()
- 更改列表元素remove()
- 从列表中删除一个元素removeAll()
- 从列表中删除所有元素clear()
- 从列表中删除所有元素(比 更有效removeAll()
)size()
- 返回列表的长度toArray()
- 将列表转换为数组contains()
- 如果列表包含指定元素,则返回true
,否则返回false
List 接口的实现类
-
ArrayList
import java.util.List; import java.util.ArrayList; public class Main { public static void main(String[] args) { // 创建 ArrayList 对象 List<Integer> numbers = new ArrayList<>(); // 添加元素 numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("List: " + numbers); // 访问列表中的元素 int number = numbers.get(2); System.out.println("Accessed Element: " + number); // 从列表中删除一个元素 int removedNumber = numbers.remove(1); System.out.println("Removed Element: " + removedNumber); } }
输出
List: [1, 2, 3] Accessed Element: 3 Removed Element: 2
要了解关于
ArrayList
的更多信息,请访问 Java ArrayList 章节。 -
LinkedList
import java.util.List; import java.util.LinkedList; public class Main { public static void main(String[] args) { // 创建 LinkedList 对象 List<Integer> numbers = new LinkedList<>(); // 添加元素 numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("List: " + numbers); // 访问列表中的元素 int number = numbers.get(2); System.out.println("Accessed Element: " + number); // 使用 indexOf() 返回一个元素的索引 int index = numbers.indexOf(2); System.out.println("Position of 3 is " + index); // 从列表中删除一个元素 int removedNumber = numbers.remove(1); System.out.println("Removed Element: " + removedNumber); } }
输出
List: [1, 2, 3] Accessed Element: 3 Position of 3 is 1 Removed Element: 2
要了解关于
LinkedList
的更多信息,请访问 Java LinkedList。 -
Vector
Vector
与ArrayList
类似,也实现了一个自增长的数组。与ArrayList
不同的是,Vecotor
的所有方法都是同步方法。下面是一个简单的Vector
示例:import java.util.Vector; public class Main { public static void main(String[] args) { // 创建 Vector 对象 Vector<Integer> numbers = new Vector<>(); // 添加元素 numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("Vector: " + numbers); System.out.println("First Element: " + numbers.firstElement()); System.out.println("Last Element: " + numbers.lastElement()); } }
输出
Vector: [1, 2, 3] First Element: 1 Last Element: 3
Java List 与 Set
List
接口和 Set
接口都继承自 Collection
接口。但是,它们之间存在一些差异。
List
可以包含重复的元素。但是,Set
不能有重复的元素。List
的元素以某种顺序存储。但是,Set
是不保证顺序的。
现在我们知道是什么了 List
,我们将在接下来的教程中详细了解 ArrayList
和 LinkedList
类。