gpt4 book ai didi

java - 迭代 ArrayList 的 ArrayList 时出现问题

转载 作者:行者123 更新时间:2023-12-02 04:06:24 27 4
gpt4 key购买 nike

我正在尝试迭代 ArrayList 的 ArrayList - 但不知何故,一切都失败了,而且我不明白错误消息。

错误是:

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.ArrayList

我尝试使用常规 for(int i; i

public static boolean listsContains(ArrayList<ArrayList<Integer>> lists, int v) {
boolean b = false;

for (ArrayList<Integer> list : lists) {
if (list.contains(v)) {
b = true;
} else {
b = false;
}
}
return b;
}

导致错误的实际行是“for (ArrayList list”...

已编辑:为了清楚起见,我用更多声明性泛型编辑了代码(不幸的是,它的作用与我发布的第一个代码一样少)。

Edit2:好吧,不知何故,方法本身并不是导致问题的原因,因此根据请求,这里是填充这些列表的其余代码。代码还没有完成,但我在完成它时遇到了这个问题。

public static void main(String[] args) {
Graph g = DataSource.load();

ArrayList<ArrayList<Integer>> lists = new ArrayList<ArrayList<Integer>>();

for(int i = 0; i < g.numberOfVertices(); i++) {
if(!(listsContains(lists, i))) { // add list if node is unlisted (since after first iteration one entire network is found)
listsCreate(lists, i);
}

Iterator it = g.adj(i).iterator(); // create iterator for current node's edges

if (!(it.hasNext())) { // node has no edges
listsCreate(lists, i);
} else { // node has edges, iterate through them
while(it.hasNext()) {
Edge current = (Edge) it.next();
if(!(listsContains(lists, current.to))) { // unlisted node
int index = listsIndexOf(lists, current.from);
findNetwork(g, lists.get(index), current.to);
} else {
continue; // node already listed
}
}
}
}

System.out.println("Number of connected graphs: " + lists.size());

} // Main

最佳答案

您没有指定内部ArrayList的组件类型。从你的日志中我可以看出它包含Integers:

public static boolean listsContains(ArrayList<ArrayList<Integer>> lists, int v) {

for (ArrayList<Integer> list : lists) {
if (list.contains(v))
return true;
}

return false; // No inner arrayList contains 'v'
}

编辑:

或使用 Java 8:

public static boolean listsContains(ArrayList<ArrayList<Integer>> lists, int v) {
return lists.stream().anyMatch(list -> list.contains(v));
}

关于java - 迭代 ArrayList 的 ArrayList 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34240082/

27 4 0