你能用Java创建一个链表列表吗?

时间:2013-03-04 01:39:08

标签: java arrays linked-list

是否可以创建链接列表数组?或链接列表的arraylist?我一直在各地搜索,似乎得到了相互矛盾的答案。我已经看到“没有”的答案表明它无法完成,因为你无法制作一系列可以被解除引用的东西。我已经看到了“是”的答案,表明它可以完成并且它们就在那里结束。

提前致谢。

3 个答案:

答案 0 :(得分:5)

如果我理解你的话,你基本上想要制作2D数组,但下半部分是一个链表。

import java.util.ArrayList;
import java.util.LinkedList;

public class Test
{
    public static void main(String[] args)
    {
        LinkedList one = new LinkedList();
        LinkedList two = new LinkedList();
        LinkedList three = new LinkedList();

        ArrayList<LinkedList> array = new ArrayList<LinkedList>();

        array.add(one);
        array.add(two);
        array.add(three);

        // .. do stuff
    }
}

Java并不关心数组或列表中的对象是什么,所以没有什么可以反对放入另一个数组或列表。

答案 1 :(得分:4)

最糟糕的方式:创建一个原始列表数组:

List[] lstString = new List[10];
for(int i = 0; i < lstString.length; i++) {
    lstString[i] = new LinkedList<String>();
    lstString[i].add(Integer.toString(i));
}
for(int i = 0; i < lstString.length; i++) {
    for(Iterator it = lstString[i].iterator(); it.hasNext(); ) {
        System.out.println(it.next());
    }
}

稍微好一点的方法:使用一个保存List的包装类并创建一个数组:

public class Holder {
    List list = new LinkedList();
}

//...
Holder[] holders = new Holder[10];
for(int i = 0; i < holders; i++) {
    holders[i] = new Holder();
}

更好的方法:使用List<List<Data>>

List<List<Data>> lstOfListOfData = new ArrayList<List<Data>>();
for(int i = 0; i < 10; i++) {
    lstOfListOfData.add(new LinkedList<Data>());
}

答案 2 :(得分:0)

  

我看到“没有”的答案表明它无法完成,因为你无法制作一系列可以解除引用的东西

如果数组的成员值为null并不重要,如果您仍然可以“访问”该成员并实例化它,则不会取消引用它。 是的,你可以。