簡體   English   中英

通過一系列鏈接列表

[英]go through an array of linked lists

我想創建一個指向鏈接列表的指針數組,然后遍歷每個列表。 要創建它,我可以簡單地創建所需的任何列表,然后執行類似的操作

LinkedList array[] = new LinkedList[length];

然后只是設置一個循環以將數組中的每個值設置為指向列表之一?

設置完所有清單后,我將如何瀏覽? 我以為是

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

您已經混合了Java數組對象和收集框架的List api。 您可以通過以下兩種方法來完成自己想做的事情:

  1. 使用數組(不鼓勵使用-參見此線程 ):

     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 } 

在這兩種情況下,您都可以受益於使用增強的for循環

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

這適用於基於數組的版本或基於List的版本。

PS您不應使用原始的LinkedList類型。 相反,您應該將LinkedList的泛型類型參數綁定到特定的元素類型(即使它是Object )。 例如:

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

為了舊代碼,該語言允許使用原始類型,但是新代碼永遠不要使用它們。 但是,上面的第一個選項將不起作用-您將不得不使用第二種方法。

您的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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM