【问题标题】:Initializing an ArrayList with an array in a single line [duplicate]用单行中的数组初始化 ArrayList [重复]
【发布时间】:2013-01-23 13:44:45
【问题描述】:

我有一个Strings 数组,我希望能够按照以下方式做一些事情

String[] arrayOfStrings = {"this", "is", "an", "array", "of", "strings"};
List<String> listOfStrings = new ArrayList<String>( arrayOfStrings );

List<String> listOfStrings = new ArrayList<String>();
listOfStrings.addAll( arrayOfStrings );

我知道如果我的字符串已经在一个集合中,我可以同时执行这两项操作,并且我可以遍历数组并单独添加它们,但是这有点混乱。

有没有办法用数组初始化List(或任何与此相关的集合)?

【问题讨论】:

    标签: java arrays list data-structures


    【解决方案1】:

    ArrayList&lt;List&lt;String&gt;&gt; arrayStringMega = new ArrayList&lt;List&lt;String&gt;&gt;(Arrays.asList(Arrays.asList("1","2","3"),Arrays.asList("2","3","4")));

    【讨论】:

    • 这只是关于Arrays.asList的另一个重复答案
    • 如果你仔细看看。它已经在一行中完成了:)
    【解决方案2】:

    您可以使用Arrays.asList 方法,该方法接受var-args,并返回由数组支持的固定大小List。因此,您不能将任何元素添加到此列表中。此外,对List 的元素所做的任何修改都将反映在array 中。

    String[] arrayOfStrings = {"this", "is", "an", "array", "of", "strings"};
    List<String> list = Arrays.asList(arrayOfStrings);
    

    或:-

    List<String> list = Arrays.asList("this", "is", "an", "array", "of", "strings");
    

    如果你想增加这个列表的大小,你必须在ArrayList构造函数中传递它。

    List<String> list = new ArrayList<String>(Arrays.asList(arrayOfStrings));
    

    【讨论】:

    • 列表是unmodifiable吗?你的意思是不能添加元素。列表内容是可修改的
    • @Cratylus。是的,我的意思是我们不能在其中添加任何元素。我会更新答案以消除混淆。
    【解决方案3】:

    这可能并不完全属于您的问题,但可能值得考虑。

    List<String> list = Arrays.asList("this", "is", "an", "array", "of", "strings");
    

    【讨论】:

      【解决方案4】:

      你可以使用 asList()

      Arrays.asList(T...a) 返回由指定数组支持的固定大小的列表。

      http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html

      【讨论】:

        【解决方案5】:

        你可以使用Arrays.asList()静态方法。

        例如:

        String[] arrayOfStrings = {"this", "is", "an", "array", "of", "strings"};
        List<String> list = Arrays.asList(arrayOfStrings);
        

        请注意,您以这种方式创建了一个“由数组备份”的固定大小的列表。如果您希望能够扩展它,则必须执行以下方式:

        String[] arrayOfStrings = {"this", "is", "an", "array", "of", "strings"};
        List<String> list = new ArrayList<String>(Arrays.asList(arrayOfStrings));
        

        【讨论】:

        • 请注意,它会创建一个固定大小的列表,因此如果您特别想要ArrayList,则需要使用new ArrayList&lt;String&gt;(Arrays.asList("a", "b", "c"))
        • @RussellZahniser 这是一个有效的注释。我会把这个添加到答案中。
        猜你喜欢
        • 2011-02-15
        • 2012-04-30
        • 2018-09-04
        • 1970-01-01
        • 2011-05-11
        • 2016-01-29
        • 1970-01-01
        • 2014-10-13
        • 1970-01-01
        相关资源
        最近更新 更多