ループを使用せずに、Javaの配列(特に多次元)に「-1」を自動入力するにはどうすればよいですか?
私はデフォルトでjavaが配列のすべての要素を「0」で初期化することを知っています。しかし、すべてのゼロを一度に-1に置き換えたい場合はどうなりますか?ループを使用せずに。
利用可能なショートカットはありますか..?
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]
。ただし、これが必要であることを確認するために、最初にプロファイルを作成する必要があります。
メソッドを使用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);
}
使用するArrays.fill()
public static void fill(int[][] array, int element) {
for(int[] subarray : array) {
Arrays.fill(subarray, element);
}
}
1次元配列の場合、次を使用できます
int[] array = new int[9000];
Arrays.fill(array, -1)
ただし、多次元配列の場合は、ループを使用する必要があります。
実際、1次元配列の場合でもループを使用しているため、ループを使用しないという要件はかなり恣意的に聞こえます。fill
メソッドに隠されているだけです。技術レベルでは、データ構造をループせずにデータ構造を埋める方法はありません。
心配するのをやめ、forループを愛することを学ぶのが一番です。