Java中的链表嵌套链表

9
我想知道如何创建一个链表的链表。同时,如果能使用预定义的Java类LinkedList及其方法进行定义和其他添加、获取、遍历操作将会很有帮助。

甚至如果我得到用户定义的带有基本方法的链表类的代码也是可以的。谢谢 - Anand Kumar
您不需要以这种方式在帖子中进行评论。您随时可以编辑原始问题。 - BlackVegetable
4个回答

25

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

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

这是一个由YourClass对象的LinkedList组成的LinkedList集合。自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 的子类)的子类,或者创建一个包含列表的列表作为字段的类,并在那里添加用于操作列表的方法。


如何迭代这个列表的列表? - roottraveller
@roottraveller 添加了一个简单的例子 :) 根据您想要做什么,有很多方法可以实现。 - Autar

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是一个LinkedList of LinkedLists,而变量temp包含了第一个列表存储的值,即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添加到外部列表中。使用这段代码后,您可以轻松地添加单个值:
lists.get(2).add("Foo");

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

根据声明,要添加另一个链接列表(默认情况下是添加到末尾),您需要执行以下操作

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

要将一个元素添加到系列中的第二个链表中:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接