首页 > 编程笔记 > Java笔记 阅读:14

Java List接口的用法(非常详细)

Java 中的 List 集合包括 List 接口以及 List 接口的所有实现类。

List 集合中的元素可以重复,各元素的顺序就是对象插入的顺序。类似 Java 数组,用户可通过使用索引(元素在集合中的位置)来访问集合中的元素。

Java List接口

List 接口继承了 Collection 接口,因此包含 Collection 接口中的所有方法。

此外,List 接口还定义了以下两个非常重要的方法:
List 接口的常用实现类有 ArrayList 类与 LinkedList 类,简述如下:

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 接口中的所有方法,还包含了如下表所示的方法。

表:LinkedList 类的特有方法
方法 功能描述
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#基础教程 

相关文章