Java 中初始化列表

2024年9月10日 | 阅读 6 分钟

List 是 Collection 的一个派生接口。它是一个有序的对象集合,允许存储重复值。List 维护插入顺序,因此可以实现按位置访问和插入元素。List 接口的实现类包括 Vector、Stack、LinkedList 和 ArrayList。

在 Java 中初始化列表是开发过程中的关键步骤,因为它定义了列表的初始状态并为其后续操作做准备。Java 中有多种初始化列表的方法,选择哪种方法取决于项目的具体需求。

List 是一个接口,可以使用以下方法来创建 List 的实例:

以下是初始化列表的不同方法。

  1. 使用 List.add() 方法
  2. 使用 Arrays.asList()
  3. 使用 Collections 类方法
  4. 使用 Java 8 Stream
  5. 使用 Java 9 List.of()

方法:使用 List.add() 方法

List 是一个接口,不能直接实例化。但是,可以创建并实例化实现了该接口的类的对象。

add(): add() 方法是 Java 中常用的方法,用于向集合或列表添加元素。Java 中许多类型的集合都提供了此方法,包括 List、Set 和 Map。

实现了 List 接口的类包括 Vector、LinkedList、Stack 和 ArrayList 等。

语法

此方法有两种情况。

  1. 通用方法
  2. 双重花括号初始化

情况 1:通用方法

实施

文件名: GeneralMethod.java

输出

The ArrayList is : [10, 30]
The LinkedList is : [20, 40]
The Stack is : [30, 10]

情况 2:双重花括号初始化

实施

文件名: Doublebrace.java

输出

The ArrayList is : [10, 30]
The LinkedList is : [20, 40]
The Stack is : [30, 10]

方法:使用 Arrays.asList()

此方法主要有两种情况。

  1. 通过创建不可变列表
  2. 通过创建可变列表

情况 1:通过创建不可变列表

我们可以使用 Arrays.asList() 将数组转换为不可变列表。因此,可以使用数组来实例化列表。

实施

文件名: ImmutableList.java

输出

The List is : [10, 20, 30]
The List is : [60, 20, 50]

情况 2:通过创建可变列表

语法

List<Integer> list_1=new ArrayList<>(Arrays.asList(element 1, element 2, element 3));

实施

文件名: Mutablelist.java

输出

The first created List : [10, 20, 30]
The Modified list is given by : [10, 20, 30, 50, 40]

方法:使用 Collections 类方法

可以使用 Collections 类中的各种方法来实例化列表。它们如下:

  1. 使用 Collections.addAll()
  2. 使用 Collections.unmodifiableList()
  3. 使用 Collections.singletonList()

情况 1:使用 Collections.addAll()

可以使用 Collections 类中的静态函数 addAll() 来初始化列表。在定义了要插入元素的 Collection 后,可以将任意数量的元素输入到 Collections.addAll() 中。

语法

实施

文件名: CollectionsAddAll.java

输出

The List is given by : [10, 20, 30, 40]

情况 2:使用 Collections.unmodifiableList()

Collections.unmodifiableList() 返回的列表不能被修改,也就是说,不能添加或删除任何元素。如果尝试修改列表,将生成 UnsupportedOperationExample。

语法

实施

文件名: UnmodifableList.java

输出

The List is given by : [10, 20, 30]

情况 3:使用 Collections.singletonList()

Collections.singletonList() 返回一个只包含一个元素的不可更改列表。

语法

实施

文件名: SingletonList.java

输出

The List is given by : [10]

方法:使用 Java 8 Stream

从 Java 8 开始,可以通过添加 Stream 和函数式编程来创建任何对象流,然后将它们编译成列表。

Stream 接口提供了 toList() 方法,该方法是收集 Stream 元素为不可变的 Java List 的抽象。toList() 方法返回一个包含所有 Stream 元素的新 List。或者,我们可以使用 Collectors 类的 toCollection() 方法来提供一个 List 实例。toCollection() 将所有 Stream 元素收集到给定的 List 中并返回它。

语法

实施

文件名: java8Stream.java

输出

The List using Syntax 1 is given by : [10, 20, 30, 40]
The List using Syntax 2 is given by : [10, 20, 30, 40]
The List using Syntax 3 is given by : [10, 20, 30, 40]

方法:使用 Java 9 List.of()

Java 9 引入的 List.of() 函数可以从接收到的任意数量的参数创建一个简化的、不可变的列表。

Java 9 在 List 类中引入了一个工厂方法,该方法返回一个包含给定元素的不可变 ArrayList 的实例。这是在同一行创建和初始化 ArrayList 最简单的方法。

语法

实施

文件名: Java9Example.java

输出

The List is given by : [10, 20, 30, 40]