在Java
中,有没有办法在范围内创建元素数组?
例如,
new int[] {1:10}, which should be equivalent to,
new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
我在想,如果我们需要创建一个大范围元素数组(5-1000),而不是像5,6,...,1000那样写,如果有像5:1000的方式。
答案 0 :(得分:8)
在Java 8中
int[] array = IntStream.rangeClosed(1, 10).toArray();
答案 1 :(得分:1)
没有内置语言功能,但您可以轻松创建一个执行此功能的方法:
public static int[] createIntRangeArray(int start, int end) {
int[] result = new int[end-start+1];
for(int i = start; i <= end; i++)
result[i-start] = i;
return result;
}
然后:
createIntRangeArray(1, 10)
// is equivalent to
new int[] {1,2,3,4,5,6,7,8,9,10}
答案 2 :(得分:1)
class ArrayGenerator {
public static int[] generateArray(int start, int end) {
int[] array = new int[end-start+1];
for(int i=start;i<=end;i++) {
array[i-start] = i;
}
return array;
}
}
//这可以像
一样使用 int start = 5;
int end = 10;
int[] generatedArray = ArrayGenerator.generateArray(start,end);
for(int i : generatedArray) {
System.out.println(i);
}
答案 3 :(得分:1)
考虑编写一个包含初始化数组的循环的单独方法。
public int[] createArrayWithRange(int startIncl, int endIncl) {
int[] nums = new int[endIncl - startIncl + 1];
for (int i = 0; i < (endIncl - startIncl + 1) ; i++) {
nums[i] = i + startIncl;
}
return nums;
}
答案 4 :(得分:0)
我的主张:
public List<Integer> generateIntTab(int size){
List<Integer> x = new ArrayList<Integer>();
for(int i = 0 ; i < size; i++){
x.add((i << 1)-i+1);
}
return x;
}
它比标准JDK8函数慢一点,它给出了@Reimeus