在一行中初始化ArrayList

问题:

我想创建用于测试目的的选项列表。起初我做到了这一点:

ArrayList<String> places = new ArrayList<String>();
places.add("Buenos Aires");
places.add("Córdoba");
places.add("La Plata");

然后我重构代码如下:

ArrayList<String> places = new ArrayList<String>(
    Arrays.asList("Buenos Aires", "Córdoba", "La Plata"));

有没有更好的方法来做到这一点?

回答:

实际上,可能是“最好的”初始化ArrayList的方法是你写的方法,因为它不需要以任何方式创建一个新的List

ArrayList<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");

抓到的是,有相当多的输入需要引用list实例。
有一些替代方法,例如使用一个实例初始化器(也称为“双括号初始化”)来做一个匿名的内部类:

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

但是,我不太喜欢这个方法,因为你最终得到的是ArrayList的一个子类,它有一个实例初始化器,该类只是创建一个对象 – 这似乎有点过分对我来说。
如果Project CoinCollection Literals proposal被接受(它被预定在Java 7中引入,但也不可能是Java 8的一部分),那么会是什么好的。)

List<String> list = ["A", "B", "C"];

不幸的是,这不会帮助你,因为它将初始化一个不变的List而不是ArrayList,而且,如果它将永远不可用。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Initialization of an ArrayList in one line

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

60 + = 68