【发布时间】:2017-03-13 15:24:20
【问题描述】:
void topologicalSortUtil(int v, boolean visited[], Stack<Integer> stack, ArrayList<Integer>[] adj) {
visited[v] = true;
for (int i : adj[v]) {
if (!visited[i]) {
topologicalSortUtil(i, visited, stack, adj);
}
}
stack.push(v);
}
在这里,我正在调用一个arraylist 数组。正如我的 IDE (IntelliJ) 所说,错误出现在增强的 for 循环中。这似乎是一个完全有效的调用,因为 adj[v] 将返回一个 ArrayList 和整数 i 捕获数组的每个元素,然后在递归调用中处理它们。
@Alex Shesterov 和其他人, 这是生成 adj 的代码。
ArrayList[] arr = new ArrayList[n+1];
for(int i=0; i<=n; i++){
arr[i] = new ArrayList<Integer>();
}
arr[1].add(Arrays.asList(8,6,2));
arr[2].add(Arrays.asList(7));
arr[3].add(Arrays.asList(6));
arr[4].add(Arrays.asList(5,2));
arr[5].add(Arrays.asList(4,2,3));
arr[6].add(Arrays.asList(3,2,5));
arr[7].add(Arrays.asList(2));
arr[7].add(Arrays.asList(1,2,4));
【问题讨论】:
-
adj 是
ArrayList<Integer>类型的数组,在你的 foreach 循环中int i不能保存数组列表 -
您确定错误在该代码中吗?它似乎在您使用
Arrays类的地方。
标签: java arrays exception arraylist foreach