Java List接口的用法(非常详细)
Java 中的 List 集合包括 List 接口以及 List 接口的所有实现类。
List 集合中的元素可以重复,各元素的顺序就是对象插入的顺序。类似 Java 数组,用户可通过使用索引(元素在集合中的位置)来访问集合中的元素。
此外,List 接口还定义了以下两个非常重要的方法:
List 接口的常用实现类有 ArrayList 类与 LinkedList 类,简述如下:
【实例】举例说明 List 集合的常用方法。在项目中创建 Gather 类,在主方法中创建集合对象,依次向集合对象中添加“a”、“b”、“c”这 3 个元素,先使用 Math 类的 random() 方法随机获取集合中的某个元素,再移除集合中索引位置是“2”的元素并把余下的元素输出到控制台上。实例代码如下:
LinkedList 类除了包含 Collection 接口和 List 接口中的所有方法,还包含了如下表所示的方法。
【实例】记录入库的商品名称。首先,记录入库的商品名称,并把它们输出到控制台上。然后,输出录入的第一个商品名称和最后—个商品名称。最后,输出删除录入的最后一个商品后的剩余商品名称。代码如下:
List 集合中的元素可以重复,各元素的顺序就是对象插入的顺序。类似 Java 数组,用户可通过使用索引(元素在集合中的位置)来访问集合中的元素。
Java List接口
List 接口继承了 Collection 接口,因此包含 Collection 接口中的所有方法。此外,List 接口还定义了以下两个非常重要的方法:
- get(int index):获得指定索引位置的元素;
- set(int index,Object obj):将集合中指定索引位置的对象修改为指定的对象。
List 接口的常用实现类有 ArrayList 类与 LinkedList 类,简述如下:
- ArrayList 类实现了可变的数组,允许保存所有元素,包括 null,并可以根据索引位置对集合进行快速的随机访问。缺点是向指定的索引位置处插入对象或从指定的索引位置处删除对象的速度较慢。
- LinkedList 类采用链表结构保存对象。这种结构的优点是便于向集合中插入对象或从集合中删除对象。需要向集合中插入对象或从集合中删除对象时,使用 LinkedList 类实现的 List 集合的效率较高;但对于随机访问集合中的对象,使用 LinkedList 类实现 List 集合的效率较低。
Java ArrayList类
使用 List 接口时通常声明为 List 类型,通过 ArrayList 类可以实例化 List 接口。代码如下:List<E> list = new ArrayList<>();在上面的代码中,E 可以是合法的 Java 数据类型。例如,如果集合中的元素为字符串类型,那么 E 可以被修改为 String。
【实例】举例说明 List 集合的常用方法。在项目中创建 Gather 类,在主方法中创建集合对象,依次向集合对象中添加“a”、“b”、“c”这 3 个元素,先使用 Math 类的 random() 方法随机获取集合中的某个元素,再移除集合中索引位置是“2”的元素并把余下的元素输出到控制台上。实例代码如下:
public class Gather { public static void main(String[] args) { List<String> list = new ArrayList<>(); // 创建集合对象 list.add("a"); // 向集合中添加元素 list.add("b"); list.add("c"); int i = (int) (Math.random() * list.size()); // 获取 0 ~ 2 的随机数 System.out.println("随机获取集合中的元素:" + list.get(i)); list.remove(2); // 从集合中移除指定索引位置的元素 System.out.println("从集合中移除索引是'2'的元素后,集合中的元素是:"); for (int j = 0; j < list.size(); j++) { // 循环遍历集合 System.out.println(list.get(j)); } } }运行结果为:
随机获取集合中的元素:b
从集合中移除索引是'2'的元素后,集合中的元素是:
a
b
Java LinkedList类
通过 LinkedList 类也可以实例化 List 接口,代码如下:List<E> list = new LinkedList<>();LinkedList 类采用链表结构保存元素,这种结构的优点是便于向集合中插入元素或者从集合中删除元素。当需要频繁向集合中插入元素或从集合中删除元素时,使用 LinkedList 类比使用 ArrayList 类的效率更高。
LinkedList 类除了包含 Collection 接口和 List 接口中的所有方法,还包含了如下表所示的方法。
方法 | 功能描述 |
---|---|
void addFirst(E e) | 将指定元素添加到该集合的开头 |
void addLast(E e) | 将指定元素添加到该集合的末尾 |
E getFirst() | 返回该集合的第一个元素 |
E getLast() | 返回该集合的最后一个元素 |
E removeFirst() | 删除该集合的第一个元素 |
E removeLast() | 删除该集合的最后一个元素 |
【实例】记录入库的商品名称。首先,记录入库的商品名称,并把它们输出到控制台上。然后,输出录入的第一个商品名称和最后—个商品名称。最后,输出删除录入的最后一个商品后的剩余商品名称。代码如下:
import java.util.List; import java.util.LinkedList; public class Warehouse { public static void main(String[] args) { List<String> products = new LinkedList<String>(); // 创建集合对象 String p1 = new String("C语言入门教程"); String p2 = new String("Java基础教程"); String p3 = new String("Python基础教程"); String p4 = new String("C#基础教程"); products.add(p1); // 将 p1 对象添加到 LinkedList 集合中 products.add(p2); // 将 p2 对象添加到 LinkedList 集合中 products.add(p3); // 将 p3 对象添加到 LinkedList 集合中 products.add(p4); // 将 p4 对象添加到 LinkedList 集合中 String p5 = new String("Go入门教程"); ((LinkedList<String>) products).addLast(p5); // 在集合的末尾添加 p5 对象 System.out.println("******** 商品信息 **********"); System.out.println("\n目前商品有:"); for (int i = 0; i < products.size(); i++) { System.out.print(products.get(i) + "\t"); } System.out.println("\n第一个商品的名称为:" + ((LinkedList<String>)products).getFirst()); System.out.println("最后一个商品的名称为:" + ((LinkedList<String>)products).getLast()); ((LinkedList<String>) products).removeLast(); // 删除最后一个元素 System.out.println("删除最后的元素,目前商品有:"); for (int i = 0; i < products.size(); i++) { System.out.print(products.get(i) + "\t"); } } }运行结果为:
******** 商品信息 ********** 目前商品有: C语言入门教程 Java基础教程 Python基础教程 C#基础教程 Go入门教程 第一个商品的名称为:C语言入门教程 最后一个商品的名称为:Go入门教程 删除最后的元素,目前商品有: C语言入门教程 Java基础教程 Python基础教程 C#基础教程
相关文章
- Java list接口用法详解
- Java List.add()方法:向集合列表中添加对象
- Java List.addAll()方法:添加所有元素到列表中
- Java List.contains()方法:判断列表中是否包含指定元素
- Java List.get()方法:获取列表指定位置的元素
- Java List.isEmpty()方法:判断集合对象是否为空
- Java List.remove()方法:移出列表中的指定元素
- Java List.removeAll()方法:从列表中移除所有元素
- Java List.size()方法:返回列表中元素的个数
- Java List.subList()方法:获取列表中指定范围的子列表