给定Element[]类型的数组:

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

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

ArrayList<Element> arrayList = ???;

当前回答

根据这个问题,使用java 1.7的答案是:

ArrayList<Element> arraylist = new ArrayList<Element>(Arrays.<Element>asList(array));

但是,最好始终使用界面:

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

其他回答

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

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

在调用Arrays接口时,还可以使用多态性声明ArrayList,如下所示:

List<Element>arraylist=newArrayList<Integer>(Arrays.asList(array));

例子:

Integer[] array = {1};    // autoboxing
List<Integer> arraylist = new ArrayList<Integer>(Arrays.asList(array));

这应该是一种魅力。

Java 9

在Java9中,可以使用List.of静态工厂方法来创建List文本。类似以下内容:

List<Element> elements = List.of(new Element(1), new Element(2), new Element(3));

这将返回一个包含三个元素的不可变列表。如果需要可变列表,请将该列表传递给ArrayList构造函数:

new ArrayList<>(List.of(// elements vararg))

JEP 269:便利工厂收集方法

JEP269为Java集合API提供了一些方便的工厂方法。这些不可变的静态工厂方法内置在Java9和更高版本的List、Set和Map接口中。

嗨,你可以使用这行代码,这是最简单的方法

 new ArrayList<>(Arrays.asList(myArray));

或者如果您使用Java 9,也可以使用以下方法:

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

Java8的Arrays类提供了一个stream()方法,该方法具有接受基元数组和Object数组的重载版本。

/**** Converting a Primitive 'int' Array to List ****/

int intArray[] = {1, 2, 3, 4, 5};

List<Integer> integerList1 = Arrays.stream(intArray).boxed().collect(Collectors.toList());

/**** 'IntStream.of' or 'Arrays.stream' Gives The Same Output ****/

List<Integer> integerList2 = IntStream.of(intArray).boxed().collect(Collectors.toList());

/**** Converting an 'Integer' Array to List ****/

Integer integerArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

List<Integer> integerList3 = Arrays.stream(integerArray).collect(Collectors.toList());