我创建了一个简单地填充 Integer[] 对象数组的方法,我想知道使用内置 Java 方法 Arrays.setAll 是否会有性能差异:
private static Integer generate_number(){
return random.nextInt(9000);
}
public static void fill_array_with_randNumbers(Integer[] array){
Arrays.setAll(array, i -> generate_number());
}
并以旧时尚的方式进行:
private static Integer generate_number(){
return random.nextInt(9000);
}
public static void fill_array_with_randNumbers(Integer[] array){
for(int i = 0; i < array.length; i++) {
array[i] = generate_number();
}
}
最佳答案
不,如果你检查Arrays的java源代码,没有什么区别。它还使用循环来设置变量。
/**
* @param <T> type of elements of the array
* @param array array to be initialized
* @param generator a function accepting an index and producing the desired
* value for that position
* @throws NullPointerException if the generator is null
* @since 1.8
*/
public static <T> void setAll(T[] array, IntFunction<? extends T> generator) {
Objects.requireNonNull(generator);
for (int i = 0; i < array.length; i++) {
array[i] = generator.apply(i);
}
}
https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/util/Arrays.java
关于java - java中Arrays.setAll对性能有什么影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70515068/