给定Element[]类型的数组:

Element[] array = {new Element(1), new Element(2), new Element(3)};

如何将此数组转换为ArrayList<Element>类型的对象?

ArrayList<Element> arrayList = ???;

当前回答

生成ArrayList<Element>类型列表的lambda表达式(1) 没有未检查的强制转换(2) 而不创建第二个列表(使用例如asList())

ArrayList<Element>list=Stream.of(array).collector(Collectors.toCollection(ArrayList::new));

其他回答

您也可以使用Java8中的流来实现这一点。

 List<Element> elements = Arrays.stream(array).collect(Collectors.toList()); 

在Java 9中,您可以使用:

List<String> list = List.of("Hello", "World", "from", "Java");
List<Integer> list = List.of(1, 2, 3, 4, 5);

如果数组是基元类型,则给定的答案将不起作用。但自从Java 8以来,您可以使用:

int[] array = new int[5];
Arrays.stream(array).boxed().collect(Collectors.toList());

鉴于:

Element[] array = new Element[] { new Element(1), new Element(2), new Element(3) };

最简单的答案是:

List<Element> list = Arrays.asList(array);

这会很好的。但需要注意的是:

从asList返回的列表大小固定。因此,如果您希望能够在代码中添加或删除返回列表中的元素,则需要将其包装在新的ArrayList中。否则,您将获得UnsupportedOperationException。从asList()返回的列表由原始数组支持。如果修改原始数组,列表也将被修改。这可能令人惊讶。

由于这个问题很古老,所以我很惊讶,还没有人提出最简单的形式:

List<Element> arraylist = Arrays.asList(new Element(1), new Element(2), new Element(3));

从Java5开始,Arrays.asList()采用varargs参数,不必显式构造数组。