【问题标题】:How to declare an ArrayList with values? [duplicate]如何用值声明一个 ArrayList? [复制]
【发布时间】:2014-03-08 22:33:26
【问题描述】:

ArrayList or List declaration in Java 已经质疑并回答了如何声明一个空的ArrayList 但是我如何声明一个带有值的 ArrayList?

我尝试了以下方法,但它返回语法错误:

import java.io.IOException;
import java.util.ArrayList;

public class test {
    public static void main(String[] args) throws IOException {
        ArrayList<String> x = new ArrayList<String>();
        x = ['xyz', 'abc'];
    }
}

【问题讨论】:

    标签: java arraylist initialization declare


    【解决方案1】:

    在 Java 9+ 中你可以这样做:

    var x = List.of("xyz", "abc");
    // 'var' works only for local variables
    

    Java 8 使用 Stream:

    Stream.of("xyz", "abc").collect(Collectors.toList());
    

    当然,您可以使用接受Collection 的构造函数创建一个新对象:

    List<String> x = new ArrayList<>(Arrays.asList("xyz", "abc"));
    

    提示:docs 包含非常有用的信息,通常包含您正在寻找的答案。例如,这里是 ArrayList 类的构造函数:

    【讨论】:

    • 在 LHS 上使用 List 而不是 ArrayList,如果您在那里绝对不需要 ArrayList。并使用 RHS 上的菱形运算符来避免警告。
    • 短而干净的解决方案
    • 为什么用 new ArrayList() 包装? List&lt;String&gt; x = Arrays.asList("xyz", "abc") 没问题
    • 流解决方案优雅
    • 重复文档的某些部分没有害处 - StackOverflow 可能更受欢迎。
    【解决方案2】:

    Guava library 包含用于创建列表和其他集合的便捷方法,这比使用标准库类更漂亮。

    例子:

    ArrayList<String> list = newArrayList("a", "b", "c");
    

    (假设import static com.google.common.collect.Lists.newArrayList;

    【讨论】:

      【解决方案3】:

      用途:

      List<String> x = new ArrayList<>(Arrays.asList("xyz", "abc"));
      

      如果以后不想在列表中添加新元素,也可以使用(Arrays.asList返回固定大小的列表):

      List<String> x = Arrays.asList("xyz", "abc");
      

      注意:如果你愿意,你也可以使用静态导入,那么它看起来像这样:

      import static java.util.Arrays.asList;
      

      ...

      List<String> x = new ArrayList<>(asList("xyz", "abc"));
      

      List<String> x = asList("xyz", "abc");
      

      【讨论】:

      • 感谢固定尺寸。在Set&lt;List&lt;T&gt;&gt; = Arrays.asList("a","b");contains 方法上速度更快
      【解决方案4】:

      试试这个!

      List<String> x = new ArrayList<String>(Arrays.asList("xyz", "abc"));
      

      如果您不必调用特定方法,最好使用接口List 声明ArrayList

      【讨论】:

        【解决方案5】:

        使用这个:

        ArrayList<String> x = new ArrayList(Arrays.asList("abc", "mno"));
        

        【讨论】:

          【解决方案6】:

          你可以这样做:

          List<String> temp = new ArrayList<String>(Arrays.asList("1", "12"));
          

          【讨论】:

            猜你喜欢
            • 2012-06-15
            • 2016-01-13
            • 2016-07-19
            • 2021-02-21
            • 1970-01-01
            • 2023-03-19
            • 2015-08-10
            • 2020-12-30
            • 2018-11-01
            相关资源
            最近更新 更多