我想做这样的事情:
int[][] A = ... // initialize matrix
List<Integer> rows = new LinkedList<Integer>();
for (int r = 0; r < 1000000; r++) rows.add(r);
Iterator<Integer> iter = rows.iterator();
for ( ; iter.hasNext(); ) {
// some condition based on which I remove an element
if (200 != A[iter.next().intValue()][0]) iter.remove();
}
if (rows.isEmpty()) {
System.out.println("empty");
}
但它不起作用。
答案 0 :(得分:2)
您很可能获得ArrayIndexOutOfBoundsException
。这是因为值A[iter.next().intValue()]
已超出initialize matrix
部分中设置的行边界。
假设你有行,你可以使用:
for (int r = 0; r < A[0].length; r++) {
...
答案 1 :(得分:0)
这对我有用:
public class Test {
public static void main(String args[]) {
int[][] A = new int[1000000][1];
List<Integer> rows = new LinkedList<Integer>();
for (int r = 0; r < 1000000; r++) rows.add(r);
Iterator<Integer> iter = rows.iterator();
for ( ; iter.hasNext(); ) {
// some condition based on which I remove an element
if (200 != A[iter.next().intValue()][0]) iter.remove();
}
if (rows.isEmpty()) {
System.out.println("empty");
}
}
}
并打印empty
。