给定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 = ???;
当前回答
new ArrayList<>(Arrays.asList(array));
其他回答
在创建大量ArrayList并需要简洁语法时,我使用了以下helper方法:
import java.util.ArrayList;
import java.util.Arrays;
class Main {
@SafeVarargs
public static <T> ArrayList<T> AL(T ...a) {
return new ArrayList<T>(Arrays.asList(a));
}
public static void main(String[] args) {
var al = AL(AL(1, 2, 3, 4), AL(AL(5, 6, 7), AL(8, 9)));
System.out.println(al); // => [[1, 2, 3, 4], [[5, 6, 7], [8, 9]]]
}
}
Guava使用相同的方法,因此@SafeVarargs在这里看起来很安全。另请参阅Java SafeVarargs注释,是否存在标准或最佳实践?。
new ArrayList<>(Arrays.asList(array));
如果我们看到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);
另一种方式(虽然本质上等同于新的ArrayList(array.asList(array))解决方案的性能:
Collections.addAll(arraylist, array);
正如大家所说的那样
new ArrayList<>(Arrays.asList("1","2","3","4"));
创建数组的最新常用方法是observableArrays
ObservableList:允许侦听器在发生更改时跟踪更改的列表。
对于Java SE,您可以尝试
FXCollections.observableArrayList(new Element(1), new Element(2), new Element(3));
根据Oracle Docs
可观测阵列列表()创建一个由数组列表支持的新的空可观察列表。可观测阵列列表(E…项)创建一个新的可观察数组列表,其中添加了项。
更新Java 9
在Java 9中也有点简单:
List<String> list = List.of("element 1", "element 2", "element 3");