我知道你可以在实例化过程中初始化一个数组,如下:
String[] names = new String[] {"Ryan", "Julie", "Bob"};
有没有办法对数组列表做同样的事情?或者我必须用array.add()单独添加内容?
我知道你可以在实例化过程中初始化一个数组,如下:
String[] names = new String[] {"Ryan", "Julie", "Bob"};
有没有办法对数组列表做同样的事情?或者我必须用array.add()单独添加内容?
当前回答
这是你能得到的最接近的答案:
ArrayList<String> list = new ArrayList(Arrays.asList("Ryan", "Julie", "Bob"));
你可以用更简单的方法:
List<String> list = Arrays.asList("Ryan", "Julie", "Bob")
查看数组的源代码。asList,它构造一个数组列表,但默认情况下转换为List。所以你可以这样做(但对新的jdk不可靠):
ArrayList<String> list = (ArrayList<String>)Arrays.asList("Ryan", "Julie", "Bob")
其他回答
这是你能得到的最接近的答案:
ArrayList<String> list = new ArrayList(Arrays.asList("Ryan", "Julie", "Bob"));
你可以用更简单的方法:
List<String> list = Arrays.asList("Ryan", "Julie", "Bob")
查看数组的源代码。asList,它构造一个数组列表,但默认情况下转换为List。所以你可以这样做(但对新的jdk不可靠):
ArrayList<String> list = (ArrayList<String>)Arrays.asList("Ryan", "Julie", "Bob")
在Java中,列表没有文字语法,所以你必须使用.add()。
如果你有很多元素,这有点啰嗦,但你可以:
使用Groovy或类似的东西 使用arrays . aslist(数组)
2看起来像这样:
String[] elements = new String[] {"Ryan", "Julie", "Bob"};
List list = new ArrayList(Arrays.asList(elements));
但是这会导致一些不必要的对象创建。
Arrays.asList("Ryan", "Julie", "Bob");
这就是如何使用op4j Java库(1.1。12月10日发布):-
List<String> names = Op.onListFor("Ryan", "Julie", "Bob").get();
这是一个非常酷的库,可以节省你大量的时间。
Yes.
new ArrayList<String>(){{
add("A");
add("B");
}}
这实际上是在创建一个派生自ArrayList<String>的类(外部花括号的功能),然后声明一个静态初始化器(内部花括号的功能)。这实际上是包含类的内部类,所以它有一个隐式This指针。这不是问题,除非你想序列化它,或者你希望外部类被垃圾收集。
我知道Java 7将提供额外的语言结构来完成您想要的工作。
编辑:最近的Java版本为创建这样的集合提供了更多可用的函数,并且值得研究以上(在这些版本之前提供)