使用LinkedList Java类

时间:2011-12-11 08:41:40

标签: java

我正在尝试使用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[]

3 个答案:

答案 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);