我想创建一个指向链表的指针数组,然后遍历每个列表。要创建它,我可以简单地创建我需要的许多列表,然后执行类似
的操作LinkedList array[] = new LinkedList[length];
然后设置一个循环来设置数组中的每个值以指向其中一个列表?
我把它全部设好后如何查看每个列表?我认为这就像是
while(array[x].hasNext()){
//do stuff
x++;
}
答案 0 :(得分:0)
您混淆了Java数组对象和集合框架List
api。你可以通过以下几种方式做你想做的事:
使用数组(强烈反对 - 请参阅this thread):
LinkedList array[] = new LinkedList[length];
...
for (int i = 0; i < array.length; ++i) {
LinkedList list = array[i];
// do stuff with list
}
使用List
:
List<LinkedList> array = new ArrayList<LinkedList>();
...
for (Iterator<LinkedList> iter = array.iterator();
iter.hasNext();
)
{
LinkedList list = iter.next();
// do stuff with list
}
在这两种情况下,您都可以使用enhanced for
loop:
for (LinkedList list : array) {
// do stuff with list
}
这适用于基于阵列或基于List
的版本。
P.S。您不应该使用原始LinkedList
类型。相反,您应该将LinkedList
的泛型类型参数绑定到特定的元素类型(即使它是Object
)。例如:
List<LinkedList<String>> array = new ArrayList<LinkedList<String>>();
语言允许原始类型用于旧代码,但新代码永远不应该使用它们。但是,上面的第一个选项不起作用 - 您将不得不使用第二种方法。
答案 1 :(得分:0)
你的while循环不正确:
做这样的事情!
for (LinkedList list : array) {
for (Item object : list) {
// Do something here with the item
}
}
顺便说一下,如果没有类型,不应使用LinkedList,请使用以下
之一LinkedList<String> or
LinkedList<WhateverObjectYouLike> or
LinkedList<? extends whatEverObjectYouLike>
所以假设您要创建一个包含10个列表的数组,每个列表都应包含字符串。
LinkedList<String> array[] = new LinkedList<String>[10];
for (int i=0; i<10; i++) {
array[i] = new LinkedList<String>();
}
// Add some strings to each list, as you like
...
// Print all added Strings:
for (LinkedList<String> list : array) {
for (String item : list) {
System.out.println(item);
}
}