我正在尝试从 2d 数组创建 2d ArrayList。实际上我有一个临时 ArrayList,我在 for 循环中将其解析为我的 2d ArrayList。我试图找到清除此临时 ArrayList 的正确方法,以便每次都将正确的值传递给 mags ArrayList。
for (int m = 0; m < M; m++) {
for (int n = 0; n < N; n++) {
for (int i = 0; i < gaborWavelet.length; i++) {
temp.clear();
for (int j = 0; j < gaborWavelet[0].length; j++) {
sum = gaborWavelet[i][j][m][n][0] / (M * N);
temp.add((int) (sum * 170));
}
mags.add(temp);
}
}
}
在上面的代码中,只有最终的索引-i 被传入临时 m*n*i 次。
编辑:
for (int m = 0; m < M; m++) {
for (int n = 0; n < N; n++) {
for (int i = 0; i < gaborWavelet.length; i++) {
ArrayList<Integer> temp = new ArrayList<Integer>();
for (int j = 0; j < gaborWavelet[0].length; j++) {
sum = gaborWavelet[i][j][m][n][0] / (M * N);
temp.add((int) (sum * 170));
}
mags.add(temp);
}
}
}
System.out.println(mags.get(200));
System.out.println(mags.get(0));
如果以上是您的意思,我在这里遇到了同样的问题。
最佳答案
而不是 temp.clear()
做temp = new ArrayList()
。您在 mags 中的代码将多次添加同一个 ArrayList。
并阅读this post关于如何创建ArrayList
来自数组
关于java - 正确清除 java arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21598089/