2014-11-02 5 views
0

Я хочу создать массив указателей для связанных списков, а затем пройти через каждый список. Для того, чтобы создать его можно просто создать однако много списков, мне нужно, а затем просто сделать что-то вродепройти через массив связанных списков

LinkedList array[] = new LinkedList[length]; 

, а затем просто установить цикл для установки каждого значения в массиве, чтобы указать один из списков?

Как мне пройти через каждый список после того, как я все это установил? Я думал, что это было что-то вроде

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

Просто сделайте базовый цикл для вашего массива. – KKKCoder

+0

Не используйте массив. Вы можете использовать Список списков. Таким образом, вы даже сможете использовать дженерики. – Pshemo

ответ

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 
    } 
    

В обоих случаях вам может понадобиться использовать 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>>(); 

Язык позволяет использовать необработанные типы для старого кода, но новый код никогда не должен их использовать. Однако первый вариант выше не будет работать — вам придется использовать второй подход.

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); 
    } 
} 
+0

ted был быстрее :) – Michael

Смежные вопросы