Java中链接列表的链接列表

时间:2012-06-15 12:11:37

标签: java list linked-list

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

4 个答案:

答案 0 :(得分:23)

您可以将任何对象放入列表中,包括其他列表。

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

LinkedList LinkedListYourClass个对象。它也可以用简化的方式编写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子类)的子类,也可以创建将列表列表作为字段的类,并在那里添加方法来操作列表。

答案 1 :(得分: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);

此变量 主列表 LinkedLists的LinkedList ,变量 temp 包含值存储的第一个列表,即 sublist1 ..

答案 2 :(得分:1)

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

package test;

import java.util.HashMap;
import java.util.Map;

public class Test {

      Map<String, StringBuilder> map = new HashMap<>();

      void setBit(final String key, final int n) {
          final StringBuilder s = this.map.get(key);
          final char c = s.charAt(n / 16);
          s.setCharAt(n / 16, (char) (c | 1 << n % 16));
      }

      int getBit(final String key, final int n) {
          final StringBuilder s = this.map.get(key);
          final int c = s.charAt(n / 16);
          return (c << n % 16 & 0x8000) != 0 ? 1 : 0;
      }

      CharSequence getValue(final String key) {
          return this.map.get(key);
      }

      public static void main(final String[] args) {
          final Test t = new Test();
          t.map.put("x", new StringBuilder("abc"));
          t.map.put("y", new StringBuilder("abc"));
          t.setBit("x", 3);
          t.setBit("y", 4);

          // many methods accept any CharSequence not just String
          final CharSequence xValue = t.getValue("x");
          final CharSequence yValue = t.getValue("y");
          System.out.println(String.join(",", xValue, yValue));
      }
}

此代码会自动将新 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

答案 3 :(得分:0)

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

作为声明。要添加另一个链接列表(默认情况下结束),您可以执行

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

添加元素以说明系列中的第二个链接列表:

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