简体   繁体   English

直接在Java中设置ArrayList的值

[英]Directly setting values for an ArrayList in Java

Setting a list of values for a Java ArrayList works: 设置Java ArrayList的值列表有效:

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

However, the following doesn't work and has the error "Illegal start of type" as well as other. 但是,以下操作不起作用,并且具有错误“非法启动类型”以及其他错误。 Why not? 为什么不? Since the first line in the first code block is simply assignment, shouldn't it not have an effect? 由于第一个代码块中的第一行只是赋值,它不应该没有效果吗?

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

You should use either the vararg version of Arrays.asList , eg 你应该使用Arrays.asList的vararg版本,例如

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

or explicitly create an array parameter, eg 或显式创建数组参数,例如

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

A strange and little used idiom, 一个奇怪的,很少使用的成语,

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

This is creating an anonymous class that extends ArrayList (outer brackets), and then implements the instance initializer (inner brackets) and calls List.add() there. 这是创建一个扩展ArrayList(外括号)的匿名类,然后实现实例初始化器(内括号)并在那里调用List.add()。

A good interview question if nothing else. 一个好的面试问题,如果没有别的。

Another option is to use Guava ("Google collections"), which has a Lists.newArrayList(...) method. 另一种选择是使用Guava(“Google集合”),它具有Lists.newArrayList(...)方法。

Your code would be something like 你的代码就像是

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

来自Java 7 SE文档:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM