仅使用一个元素初始化列表而无需拆分声明和初始化的最佳方法

Nap*_*ook 5 java

我在代码中找到了这一行

 List<Element> elements = Arrays.asList(element);
Run Code Online (Sandbox Code Playgroud)

并发现奇怪的是我们只需要在一个元素上使用 Arrays.asList() 。这让我开始思考是否有一种更好的方法来初始化仅包含一个元素的 ArrayList 而不使其不可变。据我所知,ArrayList 没有只接受一个元素的构造函数。

编辑-根据 Aomine 的回答,我发现这是目前做我需要做的事情的唯一方法

List<Element> elements = Stream.of(element).collect(Collectors.toCollection(ArrayList::new));
Run Code Online (Sandbox Code Playgroud)

Ous*_* D. 7

在当前版本的 Java 下你能做的最好的事情是:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

...
//additional elements can be added (later) to all lists -> all are immutable (also to the 2nd!)

List<Element> elements = new ArrayList<>(Arrays.asList(element));
// or
List<Element> elements = new ArrayList<>(Collections.singletonList(element));
// or
List<Element> elements = Stream.of(element)
                               .collect(toCollection(ArrayList::new));
Run Code Online (Sandbox Code Playgroud)

  • 确实如此,但是您将其传递给“ArrayList”的构造函数,该构造函数仅使用此集合来创建新的可变列表。(此外,Stream 示例可以缩写为:`Stream.of(element).collect(Collectors.toList())`。) (2认同)