2012-06-15 60 views
6

Me gustaría saber cómo crear una lista vinculada de listas enlazadas. Además, sería útil si el LinkedList predefinido (clase de Java) y sus métodos se usan para definir y para otras operaciones de adición, obtención, enumeración de listas.Lista enlazada de listas enlazadas en Java

+0

Está bien, si obtengo un código de clase de lista de enlaces definida por el usuario con métodos básicos. Gracias –

+0

No necesita comentar su publicación de esta manera.Puede editar su pregunta original en cualquier momento. – BlackVegetable

Respuesta

21

Puede colocar cualquier objeto en una lista, incluida otra.

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

es un LinkedList de LinkedList s de YourClass objetos. También se puede escribir de una manera simplificada since Java 7:

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

ejemplos muy sencillos de manipular dicha lista:

A continuación, deberá crear cada sublista, aquí la adición de una sola lista secundaria:

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

luego crear los objetos de contenido:

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

Luego, puede iterar sobre ella como esta (artículos sublistas se agrupan por sublista):

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

Si desea agregar métodos específicos para esta lista de listas, puede crear una subclase de LinkedList (o List , o cualquier otra subclase List) o puede crear una clase con la lista de listas como un campo y agregar métodos allí para manipular la lista.

+0

y cómo iterar sobre esta lista de lista? – roottraveller

+0

@roottraveller Agregó un ejemplo simple :) Hay muchas maneras en que se puede hacer esto, dependiendo de lo que quiera hacer. – Autar

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

Como la declaración. Para añadir otra lista enlazada (hasta el final por defecto) que haría

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

Para añadir un elemento a digamos que la segunda lista enlazada en la serie:

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

Bueno, yo he hecho esto código y lo tengo derecho

  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); 

Aquí variables mainlist es Li nkedList de LinkedLists y variables temp contiene el valor de la primera lista almacenada es decir sublist1 ..

1

Incluso puede simplificar el acceso a las listas secundarias, por ejemplo, utilizando

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

Este código agrega automáticamente nuevas LinkedList s de la lista externa. Con este código, más adelante puede agregar fácilmente valores únicos:

lists.get(2).add("Foo"); 
Cuestiones relacionadas