0

ループを使用せずに、Javaの配列(特に多次元)に「-1」を自動入力するにはどうすればよいですか?

私はデフォルトでjavaが配列のすべての要素を「0」で初期化することを知っています。しかし、すべてのゼロを一度に-1に置き換えたい場合はどうなりますか?ループを使用せずに。

利用可能なショートカットはありますか..?

4

4 に答える 4

4

Arrays.fillを使用して1次元配列を埋めることができますが、多次元配列の場合はループする必要があります。

    int[][] array = new int[100][100];
    for (int[]a : array) {
        Arrays.fill(a, -1);
    }

ループを避ける理由は何ですか?パフォーマンスに関心がある場合(そして問題があると確信している場合)、よく行われることを実行する可能性があります。つまり、配列を1次元のものにフラット化します。

 int[] flatarray = new int[width*height];

そうすれば、1つだけで埋めることができfill(ただし、ループは非表示になります)、多くの操作の方が少し効率的です。セルへのアクセスは次のようになりますflatarray[x+y*width]。ただし、これが必要であることを確認するために、最初にプロファイルを作成する必要があります。

于 2012-12-08T11:42:17.013 に答える
1

メソッドを使用Arrays.fillして、1次元配列を埋めることができます。-

int[] array = new int[5];
Arrays.fill(array, -1);

2次元配列を埋めるには、反復することにより、上記の方法を各1次元配列に適用できます。

int[][] multiArr = new int[10][10];
for (int[] innerArr: multiArr) {
    Arrays.fill(innerArr, -1);
}
于 2012-12-08T11:42:29.577 に答える
1

使用するArrays.fill()

public static void fill(int[][] array, int element) {
    for(int[] subarray : array) {
        Arrays.fill(subarray, element);
    }
}
于 2012-12-08T11:42:36.477 に答える
1

1次元配列の場合、次を使用できます

int[] array = new int[9000];
Arrays.fill(array, -1)

ただし、多次元配列の場合は、ループを使用する必要があります。

実際、1次元配列の場合でもループを使用しているため、ループを使用しないという要件はかなり恣意的に聞こえます。fillメソッドに隠されているだけです。技術レベルでは、データ構造をループせずにデータ構造を埋める方法はありません。

 

心配するのをやめ、forループを愛することを学ぶのが一番です。

于 2012-12-08T11:42:58.503 に答える