2012-06-15 96 views
6

我想知道如何创建链接列表的链接列表。另外,如果预定义的LinkedList(来自Java的类)及其方法用于定义其他add,get,listIterating操作,将会很有帮助。Java中链接列表的链接列表

+0

它甚至可以,如果我用基本方法获取用户定义链表类的代码。谢谢 –

+0

你不需要用这种方式评论你的文章。您可以随时编辑您的原始问题。 – BlackVegetable

回答

21

您可以将任何对象放入列表中,包括另一个列表。

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

LinkedListLinkedList A S YourClass对象。它也可以用简单的方式since Java 7

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

很简单的操纵这样一个列表的例子:

然后,您需要创建的每个子列表,在这里增加一个子表:

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

然后创建内容对象:

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

然后,您可以遍历像这样(子列表项都受到子表分组):

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

如果你想具体方法添加到列表中的这个列表中,您可以创建LinkedList一个子类(或List ,或任何其他List子类),或者您可以使用列表列表创建一个类作为字段并在其中添加方法来操作列表。

+0

以及如何迭代这个列表的列表? – roottraveller

+0

@roottraveller添加了一个简单的示例:)根据您想要做的事情,可以采取多种方法来完成。 – Autar

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

作为声明。要添加其他链接列表(在默认情况下月底),你会做

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

要添加的元素可以说该系列中的第二个链表:

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

嗯,我做到了这一点代码,我已经得到了它的权利

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

这里变量mainlist李LinkedLists的nkedList和可变温度包含第一列表存储即sublist1值..

1

甚至可以简化访问辅助列表,例如使用

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

该代码会自动将新的LinkedList s添加到外部列表中。使用此代码,您可以稍后轻松添加单个值:

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