4

n 次元配列 ( nは不明) を反復処理するにはどうすればよいですか?

配列のメモリ領域を単純に実行する C++ の結果を見つけましたが、JAVA でそれができるかどうかはわかりません。

4

3 に答える 3

2

これは別の場所で見つけました。これは、問題に対するかなり優れた再帰的ソリューションです。

 interface Callback {
       void visit(int[] p); // n-dimensional point
    }

void visit(int[] bounds, int currentDimension, int[] p, Callback c) {
   for (int i = 0; i < bounds[currentDimension]; i++) {
        p[currentDimension] = i;
        if (currentDimension == p.length - 1) c.visit(p);
        else visit(bounds, currentDimension + 1, p, c);
   }
}

visit(new int[] {10, 10, 10}, 0, new int[3], new Callback() {
   public void visit(int[] p) {
        System.out.println(Arrays.toString(p));
   }
});
于 2013-04-11T11:57:15.450 に答える
1

C/C++ では、多次元配列 ( int[][]) はメモリ内でフラットな方法で表現され、インデックス演算子はポインター演算に変換されます。そのため、これらの言語でそれを行うのは簡単で簡単です。

ただし、これは Java の状況ではなく、多次元配列は配列の配列です。型は厳密にチェックされるため、配列の配列でインデックスを作成すると、内部配列に含まれる型ではなく、結果として配列型が生成されます。

だから質問に答えてください:いいえ、JavaではC / C ++のように単純にそれを行うことはできません

それを行うには、他の回答を参照してください.. :-)

于 2013-04-11T12:00:49.333 に答える