一、Arrays.asList( )
1.作用:Arrays.asList( )方法的作用是将数组转换成List,将List中的全部集合对象添加至ArrayList集合中
2.参数:动态参数 (T... a)
3.返回值:List 集合 List<T>
4.举例:
package com.ztt.Demo02;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class demo03 {public static void main(String[] args) {//创建临时的List集合List<String> girlList=Arrays.asList("张甜甜","张亚丽","任敏","史碧蓉");//全部添加至ArrayList集合中ArrayList<String> list=new ArrayList<String>();list.addAll(girlList);System.out.println(list);}}
输出结果:
[张甜甜, 张亚丽, 任敏, 史碧蓉]
5.源代码解读:
Arrays.asList( ) 是通过创建了一个 ArrayList 对象,然后将动态参数(T... a)传入,返回值是List 集合 List<T>
二、Arrays.binarySearch( )
1.作用:Arrays.binarySearch( )方法的作用是在一组有序数组里查找目标元素
2.参数:(int[ ] a, int key)
参数1:目标数组
参数2:需要查找的元素
3.返回值:查找到的目标元素的下标(没有查找到返回-1)
4.举例:
import java.util.Arrays;public class demo03 {public static void main(String[] args) {int[] array= {28,12,89,73,65,18,96,50,8,36};int target=36; //目标元素//先排序Arrays.sort(array);System.out.println(Arrays.toString(array));//再查找int index=Arrays.binarySearch(array, target);System.out.println(index);}
}import java.util.Arrays;public class demo05 {public static void main(String[] args) {// 查找元素:使用Arrays工具类的binarySearch()方法// int[] numbers= {11,12,13,14,17,19,13,27};//有序数组int[] numbers= {3,6,2,5,9,7,6,2};//无序数组int target=7;//快速排序Arrays.sort(numbers);System.out.println(Arrays.toString(numbers));//基于二分查找,要求数组必须有序int index=Arrays.binarySearch(numbers, target);System.out.println(index);}}
输出结果:
[8, 12, 18, 28, 36, 50, 65, 73, 89, 96]
4[2, 2, 3, 5, 6, 6, 7, 9]
6
5.源代码解读:
binarySearch( )方法通过传入参数目标数组和需要查找的元素,返回binarySearch0()方法的四个参数:a:要搜索的数组 0:要搜索的起始下标 a.length:要搜索的结束下标最后一个元素的下标为a.length-1 key:要搜索的值
binarySearch( )方法是调用了 binarySearch0( )方法,low为低位0,high为高位数组a.length-1,然后通过计算得到中间位置mid,获取中间值midVal,然后再用中间值midVal和目标值key相较。
若中间值midVal大于目标值key时,说明目标元素可能在目标数组的上半区,将high=mid-1,然后继续计算中间值,依次循环,直到low<=high时,循环结束。若找到目标元素,则返回其下标,若没找到,则返回一个负数 -(low + 1)
若中间值midVal小于目标值key时,说明目标元素可能在目标数组的下半区,将low=mid+1,然后继续计算中间值,依次循环,直到low<=high时,循环结束。若找到目标元素,则返回其下标,若没找到,则返回一个负数 -(low + 1)
三、Arrays.copyOf( )
1.作用:Arrays.copyOf( )方法的作用是复制数组
2.参数:
参数1:原数组
参数2:复制的元素个数
3.返回值:int类型的数组
4.举例:
package com.ztt.Demo02;import java.util.Arrays;public class demo04 {public static void main(String[] args) {// 数组复制//方式2:通过Arrays工具类的copyOf()\copyOfRange()int[] numbers= {1,2,3,4,5,6,7};System.out.println("原数组内容:"+Arrays.toString(numbers));System.out.println(numbers);//复制前三个元素:从下标0开始复制,复制前三个元素int[] arr01=Arrays.copyOf(numbers, 3);System.out.println("前三个元素:"+Arrays.toString(arr01));System.out.println(arr01);//复制所有元素:从下标0开始复制,复制所有元素int[] arr02=Arrays.copyOf(numbers, numbers.length);System.out.println("所有的元素:"+Arrays.toString(arr02));System.out.println(arr02);}}
输出结果:
原数组内容:[1, 2, 3, 4, 5, 6, 7]
[I@515f550a
前三个元素:[1, 2, 3]
[I@626b2d4a
所有的元素:[1, 2, 3, 4, 5, 6, 7]
[I@5e91993f
5.源代码解读:
Arrays.copyOf( )方法通过传入参数原始数组和想要创建的新数组的长度,返回一个int类型的数组,创建一个新的数组int[ ] copy:长度为newLength,用于存放复制过来的元素,然后通过System.arraycopy( )方法,将原数组中的元素复制到copy数组中。
System.copyOf( )
1.作用:System.copyOf( )方法的作用是数组的复制,效率高
2.参数:
参数1:原数组
参数2:开始复制的位置
参数3:目标数组
参数4:开始存储的位置
参数5:复制的长度(复制的元素个数)
3.返回值:没有返回值 void
4.举例:
import java.util.Arrays;public class demo01 {public static void main(String[] args) {// 数组的常用操作://1.填充//2.复制数组//方式1:System类的arraycopy()方法 效率高int[] numbers= {1,2,3,4,5,6,7};int[] target=new int[numbers.length];//参数1:原数组//参数2:开始复制的位置//参数3:目标数组//参数4:开始存储的位置//参数5:复制的长度(复制的元素个数)System.arraycopy(numbers, 0, target, 0, numbers.length);//输出数组内容System.out.println(Arrays.toString(numbers));System.out.println(Arrays.toString(target));//输出数组类型和内存地址System.out.println(numbers);System.out.println(target);}}
输出结果:
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7]
[I@1eb44e46
[I@6504e3b2
5.源代码解读:
System.copyOf( )通过传入参数 原数组 开始复制的位置 目标数组 开始存储的位置 复制的元素个数 没有返回值。
四、Arrays.copyOfRange( )
1.作用:Arrays.copyOfRange( )方法的作用是复制指定区间的元素
2.参数:
参数1:原数组
参数2:开始复制的位置
参数3:结束位置
3.返回值:int类型的数组
4.举例:
package com.ztt.Demo02;import java.util.Arrays;public class demo05 {public static void main(String[] args) {//复制指定区间元素:从下表1开始复制,复制下标4之前的元素int[] numbers= {1,2,3,4,5,6,7};int[] arr03=Arrays.copyOfRange(numbers, 1,4);System.out.println("指定区间元素:"+Arrays.toString(arr03));System.out.println(arr03);//复制后五个元素:指定下标开始,复制到数组末尾int[] arr04=Arrays.copyOfRange(numbers, 2,numbers.length+5);System.out.println("后五个元素:"+Arrays.toString(arr04));System.out.println(arr04);}}
输出结果:
指定区间元素:[2, 3, 4]
[I@515f550a
后五个元素:[3, 4, 5, 6, 7, 0, 0, 0, 0, 0]
[I@626b2d4a
5.源代码解读:
Arrays.copyOfRange( ) 通过传入参数原数组 开始复制的位置 结束位置,返回一个int 类型的数组,计算新数组的长度 ,如果新数组的长度小于 0 时 ,则抛出非法参数异常(IllegalArgumentException),因为from参数大于to参数,这是一个不合法的范围;当新数组的长度大于 0 时,创建一个新的数组int[ ] copy:长度为newLength,用于存放复制过来的元素,然后通过System.arraycopy( )方法,将原数组中的元素复制到copy数组中。
五、Arrays.fill( )
1.作用:Arrays.fill( )的作用是数组的填充,将一个数组填充为目标数组
2.参数:
参数1:一个数组
参数2:填充的数字
3.返回值:没有返回值 void
4.举例:
package com.ztt.Demo02;import java.util.Arrays;public class demo06 {public static void main(String[] args) {//数组填充int[] number1= {9,8,7};System.out.println("填充前:"+Arrays.toString(number1));Arrays.fill(number1, -1);System.out.println("填充后:"+Arrays.toString(number1));int[] number2=new int[3];System.out.println("填充前:"+Arrays.toString(number2));Arrays.fill(number2, -1);System.out.println("填充后:"+Arrays.toString(number2));}}
输出结果:
填充前:[9, 8, 7]
填充后:[-1, -1, -1]
填充前:[0, 0, 0]
填充后:[-1, -1, -1]
5.源代码解读:
Arrays.fill( )通过传入参数 (一个数组 填充的数字),没有返回值,使用for循环遍历数组a,将数组a中的每一个元素设置为val。
六、Arrays.sort( )
1.作用:Arrays.sort( ) 的作用是对数组进行排序(快速排序)
2.参数:需要排序的数组
3.返回值:没有返回值 void
4.举例:
package com.ztt.Demo02;import java.util.Arrays;public class demo07 {public static void main(String[] args) {int[] number={6,8,9,7,1};System.out.println("排序前:"+Arrays.toString(number));Arrays.sort(number);System.out.println("排序后:"+Arrays.toString(number));}}import java.util.Arrays;public class demo09 {public static void main(String[] args) {// 通过Arrays工具类的sort()方法char[] arr= {'l','k','j','h','g','f','d','s','a'};System.out.println(arr);Arrays.sort(arr);System.out.println(arr);}}
输出结果:
排序前:[6, 8, 9, 7, 1]
排序后:[1, 6, 7, 8, 9]lkjhgfdsa
adfghjkls
5.源代码解读:
Arrays.sort( )通过传入一个需要排序的数组,返回值为void,方法中调用了DualPivotQuicksort类的sort()方法。
七、Arrays.toString( )
1.作用:Arrays.toString( )的作用是将数组转换为字符串的形式表示,查看数组的内容。
2.参数:一个数组
3.返回值:字符串
4.举例:
import java.util.Arrays;public class demo06 {public static void main(String[] args) {//无序数组int[] numbers= {1,2,9,4,5,7};System.out.println(Arrays.toString(numbers));}
}
输出结果:
[1, 2, 9, 4, 5, 7]
5.源代码解读:
Arrays.toString( )通过传入一个整数数组a作为参数,并返回一个字符串。由于它是静态的,你不需要创建类的实例就可以调用这个方法。
判断传入的数组a是null,则方法直接返回字符串"null"。计算数组中最后一个元素的下标(a.length - 1),并将其存储在变量iMax中。然后,如果iMax等于-1(即数组为空),则方法返回字符串"[ ]"。
创建一个StringBuilder对象b,用于构建数组的字符串表示。StringBuilder是一个可变对象,用于高效地构建和修改字符串。向StringBuilder对象b追加左方括号[,表示数组的开始。for遍历数组,向StringBuilder对象b追加数组a的第i个元素。检查当前索引i是否等于最后一个元素的索引iMax。如果是,则向StringBuilder对象b追加右方括号],并将StringBuilder转换为字符串返回。如果当前元素不是最后一个元素,则在追加当前元素后,还向StringBuilder对象b追加逗号和空格。