我创建了一个简单地填充 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());
}
Run Code Online (Sandbox Code Playgroud)
并以旧时尚的方式进行:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
不,如果你检查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);
}
}
Run Code Online (Sandbox Code Playgroud)
https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/util/Arrays.java
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |