2016-05-27 14 views
-1

Ich versuche, durch eine verknüpfte Liste (die wir die Superliste nennen können) zu gehen, die Elemente von verknüpften Listen (Unterlisten) enthält.Wie finde ich die Länge einer Linkedlist in einer Linkedlist?

Das Verfahren, das die Elemente in den beiden verketteten Listen ergänzt ist:

LinkedList<Object> list = new LinkedList<>(); 

public void add(Object... item) { 
    LinkedList<Object> thingie = new LinkedList<>(); 
    for (Object i: item) { 
     thingie.add(i); 
    } 
    list.addAll(thingie); 
} 

Jetzt habe ich Methoden zu schreiben, wenn es zu überprüfen, sind Gruppen mit 1, 2, 3, 4 Elemente in den Unterlisten durch die Verfahrbewegung superlist Was ich bisher haben (was sehr falsch ist) ist:

LinkedList <Object> ohno = new LinkedList<>(); 
     for (int i = 0; i<list.size(); i++){ 
      ohno = (LinkedList<Object>) list.get(i); 
      if (int j = 1; j = ohno.size();){ 
       return true; 
      } 
      else return false; 
     } 
+0

Ihre Superliste 'list' ist nur eine Liste von Objekten und keine Liste von' LinkedList'. – Abhishek

+0

Ich denke du willst 'if (i == ohno.size() - 1) {' –

+0

Was meinst du mit _ "check wenn es Gruppen von 1, 2, 3, 4 Elementen gibt" _? Wie werden Sie diese Informationen verwenden? –

Antwort

0

Was können Sie tun, ist es, eine Methode erstellen, die für die Gruppengröße in Frage einen Parameter übergibt und findet heraus, ob es irgendwelche Listen Unter sind von Größe Gruppengröße.

private static boolean hasSubListsOfSize (LinkedList<Object> superList, final int groupSize) 
{ 
    for (int i = 0, size = superList.size(); i < size; i++) 
    { 
     LinkedList<Object> subList = (LinkedList<Object>) superList.get(i); 
     if (subList.size() == groupSize) 
     { 
      return true; 
     } 
    } 

    // didn't find any sub lists of the group size 
    return false; 
} 

Side Hinweis: Wie @Abhishek Ihre Super Liste wies darauf hin, ist technisch kein LinkedList von LinkedList's. Es ist ein LinkedList von Objects. Aus diesem Grund müssen Sie die explizite Umwandlung in LinkedList vornehmen, um auf die "Sub LinkedLists" zuzugreifen.

Wenn Sie eine wahre LinkedList von LinkedList's wollen, dann sollten Sie die superList wie folgt erstellen:

LinkedList<LinkedList<Object>> superList = new LinkedList<LinkedList<Object>>(); 

Wenn Sie es auf diese Weise erstellen, dann vermeiden Sie die explizite Casts bei der Kompilierung zu tun.