Java List接口的用法(附带实例)
鉴于 Java 数组用来存储数据具有局限性,我们通常使用 java.util.List 替代数组。
List 类型的集合元素有序,且可重复,集合中的每个元素都有对应的顺序索引。
在 List 类型的集合中存储数据,就像面对银行客服,会给每一个来办理业务的客户分配序号:
如下图所示:

图 1 List类型的集合
1) 插入元素:
2) 获取元素:
3) 获取元素索引:
4) 删除和替换元素:
【实例】创建集合,实现用 List 接口添加元素、获取元素、获取元素的索引,以及删除和替换元素,代码如下:
在 Java SE 中,List 的名称类型有两种,一种是 java.util.List 集合接口,另一种是 java.awt.List 图形界面的组件。
在 JDK API 中,List 接口的常用实现类有 ArrayList、LinkedList 和 Vector。

图 2 ArrrayList
ArrayList 实现类的方法与 List 接口的方法基本上完全一致,直接使用 List 接口的方法即可。
LinkedList 实现类与 ArrayList 实现类不同的是,ArrayList 实现类使用 List 接口的方法,而 LinkedList 实现类既使用 List 接口的方法,又有自己特有的方法。
下面是 LinkedList 实现类特有的方法:
【实例】创建集合,用 LinkedList 实现类在集合首位和末位添加元素、获取首位元素和末位元素、删除首位元素和末位元素,代码如下:
List 类型的集合元素有序,且可重复,集合中的每个元素都有对应的顺序索引。
在 List 类型的集合中存储数据,就像面对银行客服,会给每一个来办理业务的客户分配序号:
- 第一个来的是“张三”,客服给他分配的是 0;
- 第二个来的是“李四”,客服给他分配的是 1;
- 以此类推,最后一个序号应该是“总人数-1”。
如下图所示:

图 1 List类型的集合
Java List接口常用的方法
除从 Collection 接口继承的方法外,List 接口还添加了一些根据索引来操作集合元素的方法。1) 插入元素:
- void add(int index, Object ele):在 index 位置插入 ele 元素;
- boolean addAll(int index, Collection eles):从 index 位置开始将 eles 中的所有元素添加进来。
2) 获取元素:
- Object get(int index):获取指定 index 位置的元素;
- List subList(int fromIndex, int toIndex):返回从 fromIndex 到 toIndex 位置的子集合。
3) 获取元素索引:
- int indexOf(Object obj):返回 obj 在当前集合中首次出现的位置;
- int lastIndexOf(Object obj):返回 obj 在当前集合中最后出现的位置。
4) 删除和替换元素:
- Object remove(int index):移除指定 index 位置的元素,并返回此元素;
- Object set(int index, Object ele):设置指定 index 位置的元素为 ele。
【实例】创建集合,实现用 List 接口添加元素、获取元素、获取元素的索引,以及删除和替换元素,代码如下:
import java.util.ArrayList; import java.util.Collection; import java.util.List; public class ListDemo { public static void main(String[] args) { ListDemo listDemo = new ListDemo(); listDemo.testList(); } public void testList() { System.out.println("---- 往 List 集合添加元素 ----"); List list = new ArrayList(); list.add(1); list.add("hello"); list.add("world"); System.out.println("添加元素:" + list); System.out.println("---- 往 Collection 集合添加元素 ----"); Collection collection = new ArrayList(); collection.add("南南"); System.out.println("collection = " + collection); System.out.println("---- 将 Collection 集合元素添加到 List 集合指定的位置 ----"); // 将集合中元素添加到当前集合的指定位置 list.addAll(2, collection); System.out.println("list = " + list); System.out.println("---- 获取元素 ----"); Object o = list.get(2); System.out.println("获取指定位置的元素 = " + o); List subList = list.subList(0, 3); System.out.println("subList = " + subList); System.out.println("---- 获取元素第一次出现的位置 ----"); int i = list.indexOf("hello"); System.out.println("第一次出现的位置 = " + i); System.out.println("---- 获取元素在最后出现的位置 ----"); int i1 = list.lastIndexOf("world"); System.out.println("最后出现的位置 = " + i1); System.out.println("---- 删除集合的元素 ----"); boolean hello = list.remove("hello"); System.out.println("删除成功? " + hello); System.out.println("删除后 list = " + list); System.out.println("---- 修改集合的元素 ----"); list.set(1, "xixi"); System.out.println("修改后 list = " + list); } }在上述代码中:
- 调用 add() 方法往当前集合添加元素;
- 调用 addAll() 方法将其他集合中的元素添加到当前集合中;
- 调用 get() 方法获取当前集合的元素;
- 调用 subList() 方法获取指定元素;
- 调用 indexOf() 方法获取当前集合中第一次出现的元素的位置;
- 调用 lastIndexOf() 方法获取元素在最后出现的位置;
- 调用 remove() 方法删除当前集合中的元素,remove() 方法的参数可以是索引,也可以是删除的元素;
- 调用 set() 方法修改当前集合中的元素。
在 Java SE 中,List 的名称类型有两种,一种是 java.util.List 集合接口,另一种是 java.awt.List 图形界面的组件。
在 JDK API 中,List 接口的常用实现类有 ArrayList、LinkedList 和 Vector。
Java ArrayList实现类
ArrayList 是 List 接口的主要实现类。在本质上,ArrayList 是对象引用的一个“变长”数组,如下图所示:
图 2 ArrrayList
ArrayList 实现类的方法与 List 接口的方法基本上完全一致,直接使用 List 接口的方法即可。
Java LinkedList实现类
对频繁插入或删除元素的操作,建议使用 LinkedList 实现类,其效率较高。这是由底层采用链表(双向链表)结构存储数据决定的。LinkedList 实现类与 ArrayList 实现类不同的是,ArrayList 实现类使用 List 接口的方法,而 LinkedList 实现类既使用 List 接口的方法,又有自己特有的方法。
下面是 LinkedList 实现类特有的方法:
void addFirst(Object obj) void addLast(Object obj) Object getFirst() Object getLast() Object removeFirst() Object removeLast()
【实例】创建集合,用 LinkedList 实现类在集合首位和末位添加元素、获取首位元素和末位元素、删除首位元素和末位元素,代码如下:
import java.util.LinkedList; import java.util.List; public class ListDemo { public static void main(String[] args) { ListDemo listDemo = new ListDemo(); listDemo.testList(); } public void testList() { System.out.println("---- 添加元素 ----"); LinkedList list = new LinkedList<>(); list.add("a"); list.addFirst("b"); list.add("c"); list.add("d"); list.addLast("f"); System.out.println(list); System.out.println("---- 获取元素 ----"); Object first = list.getFirst(); System.out.println(first); Object last = list.getLast(); System.out.println(last); System.out.println("---- 删除元素 ----"); Object o = list.removeFirst(); System.out.println(o); Object o1 = list.removeLast(); System.out.println(o1); } }在上述代码中:
- 调用 addFirst() 方法将元素添加到首位;
- 调用 addLast() 方法将元素添加到末位;
- 调用 getFirst() 方法获取首位元素;
- 调用 getLast() 方法获取末位元素;
- 调用 removeFirst() 方法删除首位元素;
- 调用 removeLast() 方法删除末位元素。