你能在Java中创建一个链表数组吗?



是否可以创建一个链表数组?还是链表的数组列表?我到处都找遍了,似乎得到的答案相互矛盾。我曾见过一些"不"的回答,说这是不可能的,因为你不能创建一个可以解引用的数组。我曾见过"是"的回答,说这是可以做到的,然后就结束了。

如果我没理解错的话,你基本上是想做一个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并不关心数组或列表中的对象是什么,所以在数组或列表中放置另一个数组或列表是没有问题的。

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

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>());
}

我看到的答案是"no",说明这是不可能的,因为你不能创建一个可以解引用的数组

如果数组的成员值是null并不重要,如果你仍然可以"访问"该成员,并实例化它,它就不会被取消引用。所以,是的,你可以。

相关内容

  • 没有找到相关文章

最新更新