ArrayList初始化等同于数组初始化

这个问题在这里已经有了答案:

  • 从数组32中创建ArrayList答案
  • 在一行中初始化ArrayList 32个答案

  • Arrays.asList可以在这里帮助:

    new ArrayList<Integer>(Arrays.asList(1,2,3,5,8,13,21));
    

    是。

    new ArrayList<String>(){{
       add("A");
       add("B");
    }}
    

    这实际上做的是创建一个从ArrayList<String>派生的类(外层的大括号做这个),然后声明一个静态初始化器(内置的大括号)。 这实际上是一个内部类包含类的,所以这将有一个隐含的this指针。 除非你想串行化,否则不是问题,或者你期望外部类被垃圾收集。

    据我所知,Java 7将提供额外的语言结构来完成你想要的功能。

    编辑:最近的Java版本提供了更多可用的功能来创建这样的集合,并且值得研究以上(在这些版本之前提供)


    这里是最接近你可以得到:

    ArrayList<String> list = new ArrayList(Arrays.asList("Ryan", "Julie", "Bob"));
    

    你可以更简单地使用:

    List<String> list = Arrays.asList("Ryan", "Julie", "Bob")
    

    查看Arrays.asList的源代码,它构造一个ArrayList,但默认情况下会转换为List。 所以你可以这样做(但对于新的JDK不可靠):

    ArrayList<String> list = (ArrayList<String>)Arrays.asList("Ryan", "Julie", "Bob")
    
    链接地址: http://www.djcxy.com/p/17625.html

    上一篇: ArrayList initialization equivalent to array initialization

    下一篇: Iterating through a Collection, avoiding ConcurrentModificationException when removing in loop