一、定义与简介
Arrays.fill()方法属于Java.util.Arrays类,它是一个静态方法,用于将数组中指定范围的元素赋值为指定的值。Arrays.fill()方法的原型如下:
public static void fill(int[] a, int val)
public static void fill(long[] a, long val)
public static void fill(double[] a, double val)
public static void fill(boolean[] a, boolean val)
public static void fill(Object[] a, Object val)
该方法接收两个参数,第一个参数为要填充的数组,第二个参数为要填充的值。
二、用法示例
以下是一些使用Arrays.fill()填充数组的示例:
// 示例1:用整数类型填充数组
int[] arr = new int[5];
Arrays.fill(arr, 3);
System.out.println(Arrays.toString(arr));
// 输出结果:[3, 3, 3, 3, 3]
// 示例2:用boolean类型填充数组
boolean[] boolArr = new boolean[4];
Arrays.fill(boolArr, true);
System.out.println(Arrays.toString(boolArr));
// 输出结果:[true, true, true, true]
// 示例3:用Object类型填充数组
String[] strArr = new String[3];
Arrays.fill(strArr, "Java");
System.out.println(Arrays.toString(strArr));
// 输出结果:[Java, Java, Java]
三、填充部分数组
同时,我们可以使用Arrays.fill()方法只填充数组的部分元素,而不是整个数组:
// 示例1:只填充一个部分为5的数组元素
int[] arr = {1, 2, 3, 4, 5, 6, 7};
Arrays.fill(arr, 1, 6, 0);
System.out.println(Arrays.toString(arr));
// 输出结果:[1, 0, 0, 0, 0, 0, 7]
// 示例2:只填充奇数下标的数组元素
int[] arr = {1, 2, 3, 4, 5, 6, 7};
for (int i = 1; i < arr.length; i += 2) {
arr[i] = -1;
}
System.out.println(Arrays.toString(arr));
// 输出结果:[1, -1, 3, -1, 5, -1, 7]
在示例1中,我们填充了索引从1到5的部分数组元素为0。在示例2中,我们只填充了奇数下标的数组元素为-1,而没有填充偶数下标的数组元素。
四、性能分析
Arrays.fill()方法的性能比循环遍历数组然后逐个赋值更高效。这是因为Arrays.fill()方法实现了System.arraycopy()方法,它将要填充的元素复制到数组中,从而避免了循环遍历数组的时间开销。
以下是一个比较Arrays.fill()方法和循环遍历数组的性能的示例。
public class FillTest {
// 使用Arrays.fill()方法填充数组
public static void fillArr1(int[] arr, int val) {
Arrays.fill(arr, val);
}
// 使用for循环遍历数组填充数组
public static void fillArr2(int[] arr, int val) {
for (int i = 0; i < arr.length; i++) {
arr[i] = val;
}
}
// 测试性能
public static void test() {
int[] arr = new int[100000000];
long start, end;
start = System.currentTimeMillis();
fillArr1(arr, 1);
end = System.currentTimeMillis();
System.out.println("Arrays.fill() Time:" + (end - start));
start = System.currentTimeMillis();
fillArr2(arr, 1);
end = System.currentTimeMillis();
System.out.println("for loop Time:" + (end - start));
}
}
在使用Arrays.fill()方法填充大数组时,Arrays.fill()方法的效率要比使用循环遍历数组的方式更快。
五、总结
在此文中,我们学习了Java中Arrays.fill()方法的使用方法以及它的性能表现。该方法可以提高填充数组的效率,适用于初始化或重置数组的场景。
总之,Arrays.fill()方法是Java中强大而有用的方法之一,我们需要在实际编程中加以运用。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/153987.html