给定Element[]类型的数组:
Element[] array = {new Element(1), new Element(2), new Element(3)};
如何将此数组转换为ArrayList<Element>类型的对象?
ArrayList<Element> arrayList = ???;
给定Element[]类型的数组:
Element[] array = {new Element(1), new Element(2), new Element(3)};
如何将此数组转换为ArrayList<Element>类型的对象?
ArrayList<Element> arrayList = ???;
当前回答
给定对象数组:
Element[] array = {new Element(1), new Element(2), new Element(3) , new Element(2)};
将数组转换为列表:
List<Element> list = Arrays.stream(array).collect(Collectors.toList());
将数组转换为ArrayList
ArrayList<Element> arrayList = Arrays.stream(array)
.collect(Collectors.toCollection(ArrayList::new));
将数组转换为LinkedList
LinkedList<Element> linkedList = Arrays.stream(array)
.collect(Collectors.toCollection(LinkedList::new));
打印列表:
list.forEach(element -> {
System.out.println(element.i);
});
输出,输出
1
2
3
其他回答
使用以下代码
Element[] array = {new Element(1), new Element(2), new Element(3)};
ArrayList<Element> list = (ArrayList) Arrays.asList(array);
由于这个问题很古老,所以我很惊讶,还没有人提出最简单的形式:
List<Element> arraylist = Arrays.asList(new Element(1), new Element(2), new Element(3));
从Java5开始,Arrays.asList()采用varargs参数,不必显式构造数组。
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接口中。
如果我们看到Arrays.asList()方法的定义,您将得到如下结果:public static<T>List<T>asList(T…a)//varargs为T类型。因此,您可以这样初始化arraylist:List<Element>arraylist=Arrays.asList(新元素(1),新元素(2),新元素元素(3));注意:每个新元素(int args)将被视为单个对象,并可以作为var args传递。这个问题也可能有另一个答案。如果您看到java.util.Collections.addAll()方法的声明,您将得到如下结果:public static<T>boolean addAll(集合<?super T>c,T…a);因此,这段代码也很有用Collections.addAll(arraylist,array);
每个人已经为你的问题提供了足够好的答案。现在,从所有的建议中,你需要决定哪一个符合你的要求。您需要了解两种类型的集合。一个是未修改的集合,另一个是允许您稍后修改对象的集合。
因此,这里我将给出两个用例的简短示例。
不可变集合创建::创建后不想修改集合对象时List<Element>elementList=Arrays.asList(array)可变集合创建::创建后可能需要修改创建的集合对象时。List<Element>elementList=newArrayList<Element>(Arrays.asList(array));