直接在Java中设置ArrayList的值

时间:2011-01-21 21:29:03

标签: java arraylist

设置Java ArrayList的值列表:

Integer[] a = {1,2,3,4,5,6,7,8,9};
ArrayList<Integer> possibleValues2 = new ArrayList<Integer>(Arrays.asList(a));

但是,以下操作不起作用,并且错误“非法启动类型”以及其他错误。为什么不?由于第一个代码块中的第一行只是赋值,它不应该没有效果吗?

ArrayList<Integer> possibleValues2 = new ArrayList<Integer>(Arrays.asList({1,2,3,4,5,6,7,8,9}));

4 个答案:

答案 0 :(得分:21)

您应该使用Arrays.asList的vararg版本,例如

ArrayList<Integer> possibleValues2 =
    new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6,7,8,9));

或显式创建数组参数,例如

ArrayList<Integer> possibleValues2 =
    new ArrayList<Integer>(Arrays.asList(new Integer[]{1,2,3,4,5,6,7,8,9}));

答案 1 :(得分:6)

一种奇怪的,很少使用的习语,

List<Integer> ints = new ArrayList<Integer>() {{add(1); add(2); add(3);}}

这是创建一个扩展ArrayList(外括号)的匿名类,然后实现实例初始化器(内括号)并在那里调用List.add()。

一个好的面试问题,如果没有别的。

答案 2 :(得分:3)

另一个选择是使用Guava(“Google集合”),它有Lists.newArrayList(...)方法。

您的代码将类似于

ArrayList<Integer> possibleValues2 = Lists.newArrayList(1,2,3,4,...);

答案 3 :(得分:0)

来自Java 7 SE docs:

List<Integer> possibleValues2 = Arrays.asList(1,2,3,4,5,6,7,8,9);