8

我想知道如何创建链表的链表。LinkedList此外,如果预定义(来自 Java 的类)及其方法用于定义和其他添加、获取、列表迭代操作,这将很有帮助。

4

4 回答 4

25

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

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

是s 个对象LinkedList中的一个。它也可以从 Java 7 开始以简化的方式编写:LinkedListYourClass

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子类)的子类,或者您可以创建一个将列表列表作为字段的类,并在其中添加方法来操作列表。

于 2012-06-15T12:13:06.047 回答
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);

这里变量mainlistLinkedLists 的 LinkedList,变量temp包含存储的第一个列表的值,即sublist1 ..

于 2012-06-16T17:56:21.597 回答
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");
于 2016-10-29T12:24:07.150 回答
0
LinkedList<LinkedList<YourClass>> yourList = new LinkedList<LinkedList<YourClass>>();

作为宣言。要添加另一个链接列表(默认情况下到最后),您会这样做

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

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

yourList.get(1).add(new YourClass());
于 2012-06-15T12:56:38.357 回答