我想创建一个用于测试目的的选项列表。起初,我这样做了:
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"));
有一个更好的方法吗?
原文由 Macarse 发布,翻译遵循 CC BY-SA 4.0 许可协议
实际上,初始化
ArrayList
的“最佳”方法可能是您编写的方法,因为它不需要以任何方式创建新的List
:要注意的是,引用该
list
实例需要大量的输入。还有一些替代方法,例如使用实例初始化程序创建匿名内部类(也称为“双括号初始化”):
但是,我不太喜欢这种方法,因为你最终得到的是
ArrayList
的一个子类,它有一个实例初始化器,并且创建该类只是为了创建一个对象 - 这看起来就像对我来说有点矫枉过正。如果 Project Coin 的 Collection Literals 提议 被接受(它计划在 Java 7 中引入,但它也不太可能成为 Java 8 的一部分),那就太好了:
不幸的是,它不会在这里帮助你,因为它会初始化一个不可变的
List
而不是ArrayList
,而且,它还不可用,如果它曾经可用的话。