0

私はこのようなことをしたい:

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");
}

しかし、うまくいきません。

4

2 に答える 2

2

おそらくあなたはArrayIndexOutOfBoundsException. これは、値がセクションA[iter.next().intValue()]で設定された行の境界を超えたためです。initialize matrix

行があると仮定すると、次を使用できます。

for (int r = 0; r < A[0].length; r++) {
...
于 2012-09-22T12:29:04.917 に答える
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ます。

于 2012-09-22T12:22:21.423 に答える