java如何用一行代码初始化数组

0 投票
最新提问 2月 6, 2017 用户: skyve (290 分)

需要创建一个用于测试目的的选项列表。起初,我是这样写的︰

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"));

有更好的办法做到这一点吗?

1个回答

0 投票
最新回答 2月 6, 2017 用户: winter (340 分)

其实,你写的方法可能是初始化ArrayList的“最佳”方式,因为它并不需要创建一个新的List:

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

美中不足的是打字较多。

替代方法,例如使用实例初始化器(也称为“双括号初始化”)创建一个匿名内部类:

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

不过,我不太喜欢这种方法,因为创建了不必要的对象导致系统开销大。

还有一种写法

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

不幸的是它不太好用,它会初始化一个不可改变的List,而不是一个ArrayList。

欢迎来到编程助手,编程方面有什么不懂的问题可以尽管在这里提问,你将会收到热心爱好者的回答。
...