数组列表初始化等效于数组初始化

2022-08-31 05:09:50

我知道您可以在实例化期间初始化数组,如下所示:

String[] names = new String[] {"Ryan", "Julie", "Bob"};

有没有办法对ArrayList做同样的事情?或者我必须单独添加内容?array.add()


答案 1

Arrays.asList可以在这里提供帮助:

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

答案 2

是的。

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

这实际上是创建一个派生的类(外部大括号集执行此操作),然后声明一个静态初始化器(内部大括号集)。这实际上是包含类的内部类,因此它将具有隐式指针。这不是问题,除非您想要序列化它,或者您希望对外部类进行垃圾回收。ArrayList<String>this

我知道Java 7将提供额外的语言结构来精确地做你想做的事情。

编辑:最近的Java版本为创建此类集合提供了更多可用的功能,并且值得在上述内容上进行研究(在这些版本之前提供)