给定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 = ???;
当前回答
可以使用以下3种方法从Array创建ArrayList。
String[] array = {"a", "b", "c", "d", "e"};
//Method 1
List<String> list = Arrays.asList(array);
//Method 2
List<String> list1 = new ArrayList<String>();
Collections.addAll(list1, array);
//Method 3
List<String> list2 = new ArrayList<String>();
for(String text:array) {
list2.add(text);
}
其他回答
new ArrayList<>(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接口中。
如果数组是基元类型,则给定的答案将不起作用。但自从Java 8以来,您可以使用:
int[] array = new int[5];
Arrays.stream(array).boxed().collect(Collectors.toList());
您可以使用Cactos创建ArrayList(我是开发人员之一):
List<String> names = new StickyList<>(
"Scott Fitzgerald", "Fyodor Dostoyevsky"
);
不能保证该对象实际上是ArrayList类。如果您需要该担保,请执行以下操作:
ArrayList<String> list = new ArrayList<>(
new StickyList<>(
"Scott Fitzgerald", "Fyodor Dostoyevsky"
)
);
您也可以使用Java8中的流来实现这一点。
List<Element> elements = Arrays.stream(array).collect(Collectors.toList());