如何初始化集合并在同一行上添加数据?

20 java

在C#中,我可以创建某种类型的集合,并使用同一行上的数据对其进行初始化.

var foo = new List<string> {"one","two","three"};

在Java中有相同的方法吗?

Rav*_*yal 35

如果您需要只读 List

List<String> numbers = Arrays.asList("one","two","three");

// Can't add since the list is immutable
numbers.add("four"); // java.lang.UnsupportedOperationException
Run Code Online (Sandbox Code Playgroud)

如果你想修改List对后世.

List<String> numbers2 = new ArrayList<String>(
                            Arrays.asList("one","two","three"));
numbers2.add("four");

System.out.println(numbers2); // [one, two, three, four]
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,`Arrays.asList` 会生成一个 **MUTABLE** 列表。文档表明结果列表具有固定大小,但 `numbers.set(0, "one")` 绝对会修改列表和底层数组。 (2认同)

Dan*_*mms 6

您可以使用 Arrays.asList(T... a)

List<String> foo = Arrays.asList("one","two","three");
Run Code Online (Sandbox Code Playgroud)

正如鲍里斯在评论中提到的那样,结果List是不可改变的(即只读).您需要将其转换为ArrayList或类似才能修改集合:

List<String> foo = new ArrayList<String>(Arrays.asList("one","two","three"));
Run Code Online (Sandbox Code Playgroud)

您还可以List使用匿名子类和初始化程序创建:

List<String> foo = new ArrayList<String>() {
    {
        add("one");
        add("two");
        add("three");
    }
};
Run Code Online (Sandbox Code Playgroud)