2012-06-15 14 views
6

Vorrei sapere come creare un elenco collegato di elenchi collegati. Inoltre, sarebbe utile se il predefinito LinkedList (classe da Java) e i suoi metodi sono utilizzati per la definizione e per altre operazioni add, get, listIterating.Elenco collegato di elenchi collegati in Java

+0

È anche ok, se ottengo il codice della classe di elenco collegato definito dall'utente con i metodi di base. Grazie –

+0

Non hai bisogno di commentare il tuo post in questo modo.Puoi modificare la tua domanda originale in qualsiasi momento. – BlackVegetable

risposta

21

È possibile inserire qualsiasi oggetto in un elenco, incluso un altro elenco.

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

è una LinkedList di LinkedList s di YourClass oggetti. Può anche essere scritta in modo semplificato since Java 7:

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

molto semplici esempi di manipolazione di una tale lista:

È quindi necessario creare ogni sottoelenco, qui l'aggiunta di un unico elenco secondario:

list.add(new LinkedList<YourClass>()); 

quindi creare gli oggetti di contenuto:

list.get(sublistIndex).add(new YourClass()); 

È quindi possibile scorrere su di esso come questo (voci sottoliste sono raggruppati per sottolista):

for(LinkedList<YourClass> sublist : list) { 
    for(YourClass o : sublist) { 
     // your code here 
    } 
} 

Se si desidera aggiungere metodi specifici per questa lista di liste, è possibile creare una sottoclasse di LinkedList (o List o qualsiasi altra sottoclasse List oppure è possibile creare una classe con l'elenco di elenchi come campo e aggiungere metodi per manipolare l'elenco.

+0

e come iterare su questo elenco di lista ?? – roottraveller

+0

@roottraveller Aggiunto un semplice esempio :) Ci sono molti modi in cui ciò può essere fatto, a seconda di cosa si vuole fare. – Autar

0
LinkedList<LinkedList<YourClass>> yourList = new LinkedList<LinkedList<YourClass>>(); 

Come la dichiarazione. Per aggiungere un altro lista collegata (alla fine per impostazione predefinita) si farebbe

yourList.add(new LinkedList<YourClass>()); 

Per aggiungere un elemento al diciamo la seconda lista collegata in serie:

yourList.get(1).add(new YourClass()); 
2

Bene ho fatto questo codice e ho capito bene

  java.util.LinkedList mainlist = new java.util.LinkedList(); 

      java.util.LinkedList sublist1 = new java.util.LinkedList(); 
      sublist1.add(object1); 
      sublist1.add(object2); 
      sublist1.add(object3); 

      java.util.LinkedList sublist2=new java.util.LinkedList(); 
      sublist2.add(1); 
      sublist2.add(2); 

      mainlist.add(sublist1); 
      mainlist.add(sublist2); 

      // To retrieve the sublist1 from mainlist........... 
      java.util.LinkedList temp = (java.util.LinkedList)mainlist.get(0); 

Qui variabile mainlist è Li nkedList di LinkedLists e variabile temperatura contiene il valore del primo elenco memorizzato cioè sublist1 ..

1

Si può anche semplificare l'accesso alle liste secondarie, per esempio utilizzando

final List<List<String>> lists = new LinkedList<List<String>>() { 
     @Override 
     public List<String> get(final int index) { 
      while (index >= size()) { 
       add(new LinkedList<>()); 
      } 
      return super.get(index); 
     } 
    }; 

Questo codice aggiunge automaticamente i nuovi LinkedList s alla lista esterna. Con questo codice è possibile aggiungere facilmente singoli valori:

lists.get(2).add("Foo"); 
Problemi correlati