一、Arrays.asList( )
1、作用
Arrays.asList( )可以将一个数组以集合的形式传入一个集合对象。通常用来将一组元素全部添加到集合中。
2、参数及返回值
参数:一组动态参数
返回值:List<T>集合
3、应用举例
List<String> boyList=Arrays.asList("陈","杨","张","李");
ArrayList<String> list=new ArrayList<String>();
list.addAll(boyList);
System.out.println(list);
输出结果:[陈, 杨, 张, 李]
4、源代码解读
通过上图我们可知, Arrays.asList( )是通过创建一个ArrayList对象,然后将动态参数传入,并返回该集合。
二、Arrays.binarySearch( )
1、作用
Arrays.binarySearch( )方法可以在一个有序数组中,查找到目标元素
2、参数及返回值
参数一:目标数组
参数二:需要查找的元素
返回值:查找到的元素的下标或-1
3、应用举例
当目标数组为有序数组时
int[] number= {2,4,5,7,8,9};//有序数组
int target=7;
int index1=Arrays.binarySerach(number,target);
System.out.println(target+"在位置"+index1);
输出结果:7在位置3
当目标数组为无序数组时
int[] number1= {3,27,9,13,7};//无序数组
int target=7;
//先排序
Arrays.sort(number1);
System.out.println(Arrays.toString(number1));
//再查找
int index2=Arrays.binarySerach(number1,target);
System.out.println(target+"在位置"+index2);
输出结果:
[3, 7, 9, 13, 27]
7在位置1(是经过快速排序后的下标位置)
4、源代码解读
binarySearch()方法是调用了 binarySearch0()方法,low为0,high为数组a的长度减一,然后通过计算中间值(mid),再用中间值和目标元素相比较。
若中间值大于目标值时,说明目标元素可能在目标数组的前半区,则将high赋为mid-1后继续计算中间值,以此循环,直到low<=high时,循环结束。若找到目标元素,则返回其下标,若没找到,则返回一个负数;
若中间值小于目标值时,说明目标元素可能在目标数组的后半区,则将low赋为mid+1后继续计算中间值,以此循环,直到low<=high时,循环结束。若找到目标元素,则返回其下标,若没找到,则返回一个负数;
三、System.arraycopy( )
1、作用
System.arraycopy( )方法的作用是复制数组
2、参数
参数一:源数组
参数二:从源数组中开始复制的位置
参数三:目标数组
参数四:开始存储的位置
参数五:复制的长度
3、应用举例
int[] number={0,4,64,28,99,12};
int[] target=new int[number.length];
System.out.println("目标数组为:"+Arrays.toString(target));
System.arraycopy(number,0,target,0,number.length);
System.out.println("目标数组为:"+Arrays.toString(target));
输出结果:
目标数组为:[0, 0, 0, 0, 0, 0]
目标数组为:[0, 4, 64, 28, 99, 12]
三、Arrays.copyOf( )
1、作用
Arrays.copyOf( )方法的作用是复制数组
2、参数及返回值
参数一:源数组
参数二:复制元素的个数
返回值:数组
3、应用举例
int[] number={0,4,64,28,99,12};
System.out.println("原数组为:"+Arrays.toString(number));
System.out.println("原数组地址为:"+number);//复制前三个元素
//从下标0开始复制三个元素
int[] arr1=Arrays.copyOf(number,3);
System.out.println("前三个元素为:"+Arrays.toString(arr1));
System.out.println("前三个元素地址为:"+arr1);//复制全部元素
int[] arr2=Arrays.copyOf(number,number.length);
System.out.println("全部元素为:"+Arrays.toString(arr2));
System.out.println("全部元素地址为:"+arr2);
输出结果:
原数组为:[0, 4, 64, 28, 99, 12]
原数组地址为:[I@15db9742
前三个元素为:[0, 4, 64]
前三个元素地址为:[I@6d06d69c
全部元素为:[0, 4, 64, 28, 99, 12]
全部元素地址为:[I@7852e922
4、源代码解读
通过上图我们可以知道, Arrays.copyOf( )方法是通过创建一个以传入的参数二为长度的数组,然后通过System.arraycopy( )方法,从源数组下标为0的位置开始复制,复制到新创建的数组中,如果newLength小于源数组长度时,说明源数组的长度足够长,可以满足我们复制newLength个元素的需求;若newLength大于源数组长度时,说明源数组的长度不够,只能将源数组中的元素全部复制到新数组。然后返回新数组。
四、Arrays.copyOfRange( )
1、作用
Arrays.copyOfRange( )方法可以复制指定区间的元素
2、参数及返回值
参数一:目标数组
参数二:开始复制的位置
参数三:截至位置
3、应用举例
//复制指定区间元素:从下标[2,4)
int[] number={0,4,64,28,99,12};
int[] arr3=Array.copyOfRange(number,2,4);
System.out.println("区间复制元素为:"+Arrays.toString(arr3));//[64, 28]
System.out.println("区间复制元素地址为:"+arr3);
//复制后五个元素
int[] arr4=Arrays.copyOfRange(number,1,number.length);
System.out.println("区间复制元素为:"+Arrays.toString(arr4));
System.out.println("区间复制元素地址为:"+arr4);
输出结果:
区间复制元素为:[64, 28]
区间复制元素地址为:[I@15db9742
区间复制元素为:[4, 64, 28, 99, 12]
区间复制元素地址为:[I@6d06d69c
4、源代码解读
通过上图我们可以知道,当开始复制的位置小于截止位置时,即newLength为负数时,抛出参数非法异常;当newLength大于零时,通过System.arraycopy( )方法,从源数组下标为0的位置开始复制,复制到新创建的数组中,如果newLength小于源数组长度时,说明源数组的长度足够长,可以满足我们复制newLength个元素的需求;若newLength大于源数组长度时,说明源数组的长度不够,只能将源数组中的元素全部复制到新数组。然后返回新数组。
五、Arrays.fill( )
1、作用
fill()方法可以将一个数组全部填充为目标值
2、参数及返回值
参数一:目标数组
参数二:填充的数字
返回值:无返回值
3、应用举例
//fill()方法
int[] number1 =new int[5];
System.out.println("填充前:"+Arrays.toString(number1));
Arrays.fill(number,-2);
System.out.println("填充后:"+Arrays.toString(number1));
输出结果:
填充前:[0, 0, 0, 0, 0]
填充后:[-2, -2, -2, -2, -2]
int[] number2={1,2,3,4,5};
System.out.println("填充前:"+Arrays.toString(number2));
Arrays.fill(number2,-2);
System.out.println("填充后:"+Arrays.toString(number2));
输出结果:
填充前:[1, 2, 3, 4, 5]
填充后:[-2, -2, -2, -2, -2]
4、源代码解读
通过上图我们可以知道,Arrays.fill()方法是通过for循环来遍历数组(参数1(a)),逐个取出数组中的元素,并将它们赋值为我们需要填充的数字(参数2(val))。
六、Arrays.sort( )
1、作用
Arrays.sort( )可以快速对一个数组进行排序
2、参数及返回值
参数:一个需要排序的数组
返回值:无返回值
3、应用举例
int[] number1= {3,27,9,13,7};//无序数组
Arrays.sort(number1);
System.out.println(Arrays.toString(number1));
输出结果:[3, 7, 9, 13, 27]
4、源代码解读
七、Arrays.toString( )
1、作用
Arrays.toString( )方法可以将数组以[ num1, num2 , num3, num4]的格式输出
2、参数及返回值
参数:一个需要输出的数组
返回值:字符串
3、应用举例
int[] array={1,2,3,4,5};
System.out.println(array);
System.out.println(Arrays.toString(array));
输出结果:
[I@15db9742
[1, 2, 3, 4, 5]
4、源代码解读