浏览一系列链表

时间:2014-11-02 21:16:18

标签: java arrays linked-list

我想创建一个指向链表的指针数组,然后遍历每个列表。要创建它,我可以简单地创建我需要的许多列表,然后执行类似

的操作
LinkedList array[] = new LinkedList[length];

然后设置一个循环来设置数组中的每个值以指向其中一个列表?

我把它全部设好后如何查看每个列表?我认为这就像是

while(array[x].hasNext()){
    //do stuff
    x++;
}

2 个答案:

答案 0 :(得分:0)

您混淆了Java数组对象和集合框架List api。你可以通过以下几种方式做你想做的事:

  1. 使用数组(强烈反对 - 请参阅this thread):

    LinkedList array[] = new LinkedList[length];
    
    ...
    
    for (int i = 0; i < array.length; ++i) {
        LinkedList list = array[i];
        // do stuff with list
    }
    
  2. 使用List

    List<LinkedList> array = new ArrayList<LinkedList>();
    
    ...
    
    for (Iterator<LinkedList> iter = array.iterator();
         iter.hasNext();
        )
    {
        LinkedList list = iter.next();
        // do stuff with list
    }
    
  3. 在这两种情况下,您都可以使用enhanced for loop

    for (LinkedList list : array) {
        // do stuff with list
    }
    

    这适用于基于阵列或基于List的版本。

    P.S。您不应该使用原始LinkedList类型。相反,您应该将LinkedList的泛型类型参数绑定到特定的元素类型(即使它是Object)。例如:

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

    语言允许原始类型用于旧代码,但新代码永远不应该使用它们。但是,上面的第一个选项不起作用 - 您将不得不使用第二种方法。

答案 1 :(得分:0)

你的while循环不正确:

做这样的事情!

for (LinkedList list : array) {
    for (Item object : list) {
        // Do something here with the item
    }
}

顺便说一下,如果没有类型,不应使用LinkedList,请使用以下

之一
LinkedList<String> or 
LinkedList<WhateverObjectYouLike> or 
LinkedList<? extends whatEverObjectYouLike>

所以假设您要创建一个包含10个列表的数组,每个列表都应包含字符串。

LinkedList<String> array[] = new LinkedList<String>[10];
for (int i=0; i<10; i++) {
    array[i] = new LinkedList<String>();
}

// Add some strings to each list, as you like
...

// Print all added Strings:
for (LinkedList<String> list : array) {
    for (String item : list) {
        System.out.println(item);
    }
}