设置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}));
答案 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);