我正在尝试使用LinkedList
类来加载任何数组。我正在查看addAll
方法的文档,在我看来,我可以用很少的努力加载一系列的东西。
addAll(int index, Collection<? extends E> c) Inserts all of the elements in the specified collection into this list, starting at the specified position.
但我不太确定如何构建它。
我们只是说我有一个对象数组,我正在尝试将对象加载到链接列表中 我怎么写这个?
注意:我正在尝试将其加载到列表中,因为我将多次删除和添加。
我使用下面的代码,但收到错误:
int[] a = new int[5];
for(int index = 0; index<5; index++){
a[index] = index;
}
List<Integer> list = new LinkedList<Integer>();
list.addAll(Arrays.asList(a)); //error Here won't take a[]
答案 0 :(得分:2)
如果你需要特别的LinkedList或mutable集合类(你提到了添加/删除操作),那么Arrays.asList(T...)
将无济于事,因为它返回由指定数组支持的固定大小列表,因此不可变并且{{ 1}}通话总是会失败。
如果您不需要数组,请仅从头开始使用集合类(如ArrayList或LinkedList)。如果不可能,collection tutorial将为您提供有关使用和其他方面的合理建议。
如果你想创建一个可以使用的ArrayList(或LinkedList)(并且它会将数组的所有元素复制到List) -
Arrays.asList(T...).add(T)
编辑 -
如果数组本身是一个原始数组(您在示例中显示),那么上述方法将无法工作,因为new ArrayList<Element>(Arrays.asList(array))
实际上将返回单个元素Arrays.asList(int[])
,这就是为什么你会收到错误的原因你的榜样。
如果你发现你自己在处理基元的集合,那么我建议你看Trove或者Guava,它提供了与集合和其他日常需求相关的很棒的实用程序(它有{{1}满足您要求的方法,请参阅doc)。
答案 1 :(得分:1)
首先将数组转换为列表,然后将此列表的所有元素添加到链接列表中:
List<Foo> list = new LinkedList<Foo>();
list.addAll(Arrays.asList(myArray());
或者只是自己遍历数组,并添加每个元素:
List<Foo> list = new LinkedList<Foo>();
for (Foo foo : myArray) {
list.add(foo);
}
只需要一行代码,简单明了,效率更高。
请注意,在大多数情况下,ArrayList比LinkedList更有效。
答案 2 :(得分:0)
您可以使用java.util.Arrays类:
List<MyType> list = Arrays.asList(array);