我想知道如何创建链表的链表。此外,如果预定义的LinkedList
(来自Java的类)及其方法用于定义和其他add,get,listIterating操作,将会很有帮助。
答案 0 :(得分:23)
您可以将任何对象放入列表中,包括其他列表。
LinkedList<LinkedList<YourClass>> list = new LinkedList<LinkedList<YourClass>>();
是LinkedList
LinkedList
个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
子类)的子类,也可以创建将列表列表作为字段的类,并在那里添加方法来操作列表。
答案 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());