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() 方法删除末位元素。
ICP备案:
公安联网备案: