繁体   English   中英

使用LinkedList Java类

[英]Using LinkedList Java Class

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

如果您需要特定的LinkedList或可变集合类(您提到添加/删除操作),那么Arrays.asList(T...)将无法帮助,因为它返回由指定数组支持的固定大小列表,因此不可变和Arrays.asList(T...).add(T)调用总是会失败。

如果不需要数组,请仅从开始使用收集类(例如ArrayList或LinkedList)。 如果不可能的话,本收集教程将为您提供有关用法和其他方面的合理建议。

如果你想创建一个可以使用的ArrayList(或LinkedList)(它会将数组的所有元素复制到List) -

new ArrayList<Element>(Arrays.asList(array))


编辑 -

如果数组本身是一个原始数组(你在例子中显示),那么上面的方法将无法工作,因为Arrays.asList(int[])实际上将返回单个元素List<int[]> ,这就是你得到错误的原因在您的示例中。
如果你发现自己正在大量使用基元的集合,那么我建议你看一下Trove,或者可能是Guava ,它提供了与集合和其他日常需求有关的很棒的实用程序(它有Ints.asList()方法,满足你的要求,见doc )。

首先将数组转换为列表,然后将此列表的所有元素添加到链接列表中:

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更有效。

您可以使用java.util.Arrays类:

List<MyType> list = Arrays.asList(array);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM