Javaで次のようなことをする方法はありますか:
int foo[] = 新しい int[0..n];
すなわち
フー[0] = 0
フー[3] = 3
組み込みの言語機能を使用しない。もちろん、それを行うためのメソッドを簡単に作成できますが、何も組み込まれていません-そして、多くのサードパーティのユーティリティライブラリ(Guavaなど)にもないため、ほとんど役に立たないと思います.
そうは思いませんが、単純な for ループを使用できます。
int foo[n];
for(int i = 0; i < n; i++) foo[i] = i;
メソッドが必要な場合は、次のようなものを試してください。
public void initialize(int[] array, int start, int end) {
int array_length = array.length;
if (end > array_length) end = array_length;
for (int i = start; i < end; i++) {
array[i - start] = i;
}
}
// In any other point in your code
int foo[] = new int[6];
initialize(foo, 0, 10);
もう 1 つの方法は、Range クラスを作成してこの機能を追加することです。
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class Range implements Iterable<Integer> {
Integer array[];
public Range(int size) {
this(0, size - 1);
}
public Range(int start, int end) {
array = new Integer[end - start];
for (int i = start; i < end; i++) {
array[i - start] = i;
}
}
public List<Integer> asList() {
return Arrays.asList(array);
}
@Override
public Iterator<Integer> iterator() {
return Arrays.asList(array).iterator();
}
}
使用例を次に示します。
Range range = new Range(4, 10);
for (int i : range) {
System.out.println(i);
}
このコードは改善できると確信していますが、それだけの価値はありません。
int n = 10;
int[] arr = new int[n+1];
for
loops には柔軟な構文があるため、次のようにすることもできます。
for ( int i = 0; i < arr.length; arr[i] = i++ );
PS
上記よりも少ないコードが必要な場合は、これを行うことができます:
int i = 0;
for ( int c : arr ) { arr[i] = i++; }
PPS
これらのコードは簡潔ですが、私には不明瞭で、悪臭がします。