一、Arrays.asList()
作用:将一个指定类型的参数或是数组以List类型返回
参数:观察源码可知为一个泛型动态参数或是一个泛型数组(必须为引用类型的数组)
返回值:一个list列表
源码:
举例:
public class Test12 {
public static void main(String[] args) {
Integer[] arr = new Integer[] {1,2,3,4,5,6};
List<Integer> list1 = Arrays.asList(arr);
List<String> list2 = Arrays.asList("a","s","d","f");
System.out.println(list1);
System.out.println(list2);
}
}
运行结果:
[1, 2, 3, 4, 5, 6]
[a, s, d, f]
二、Arrays.binarySearch( )
作用:对已经排序的数组进行二分查找
参数:一个泛型数组和一个泛型元素
返回值:为int类型
源码:
这里binarySearch()方法返回了一个binarySearch0()参数表示一个数组a,从下标位置0开始到数组尾部,key为目标值
可以看出 binarySearch0()方法就是一个二分查找算法;
若是存在目标元素key则返回mid,不存在则返回-(low+1)
举例:
int[] num = new int[] { 1, 2, 3, 4, 5, 6 };
int ret = Arrays.binarySearch(num, 4);
System.out.println(ret); //目标元素4的下标位置为3
三、Arrays.copyOf( )
作用:复制一个数组,并且可以指定新数组的长度
参数:一个泛型数组(原数组对象)和一个整型元素(新数组长度)
返回值:一个泛型数组
源码:
创建了一个和原数组相同类型的数组,然后调用了System.arraycopy()方法,最后返回目标数组
举例:
int[] num = new int[] { 1, 2, 3, 4, 5, 6 };
int[] num1 = Arrays.copyOf(num,num.length+1);
System.out.println(Arrays.toString(num1)); //[1, 2, 3, 4, 5, 6, 0]
System.out.println(Arrays.toString(num)); //[1, 2, 3, 4, 5, 6]
四、Arrays.copyOfRange( )
作用:复制一个数组中指定范围的元素
参数:一个泛型数组(原数组对象)和两个整型元素(从下标位置为from到to的位置)
返回值:一个泛型数组
源码:
先判断所选定下标范围是否小于0,若是小于0则抛出异常IllegalArgumentException;若是大于0,则创建一个和所选下标范围长度相同的数组,然后调用System.arraycopy()方法,最后返回所创建的数组。
举例:
int[] num = new int[] { 1, 2, 3, 4, 5, 6 };
int[] num1 = Arrays.copyOfRange(num, 2, 4); //截取下标[2,4)的范围并复制
System.out.println(Arrays.toString(num1)); //[3, 4]
System.out.println(Arrays.toString(num)); //[1, 2, 3, 4, 5, 6]
五、Arrays.fill( )
作用:将数组中的所有元素都设为指定的值
参数:一个泛型数组(原数组对象)和一个泛型元素
返回值:voi
源码:
通过遍历目标数组,将数组中的每个元素赋值为指定的值
举例:
int[] num = new int[] { 1, 2, 3, 4, 5, 6 };
Arrays.fill(num, 0);
System.out.println(Arrays.toString(num)); //[0, 0, 0, 0, 0, 0]
六、Arrays.sort( )
作用:对数组中的元素进行排序(默认为升序)
参数:一个泛型数组
返回值:void
源码:
通过传入一个数组,然后调用DualPivotQuicksort类的sort()方法(原理是快速排序)
举例:
int[] num = new int[] { 5, 2, 9, 45, 3, 6 };
Arrays.sort(num);
System.out.println(Arrays.toString(num)); //[2, 3, 5, 6, 9, 45]
七、Arrays.toString( )
作用:将数组转化为字符串
参数:一个泛型数组
返回值:一个字符串
源码:
先判断传入的数组是否为空,定义一个iMax以确定数组结束的位置,判断iMax是否为正数;然后创建一个StringBuilder对象,这里使用StringBuilder是因为 String类型的值一旦确定就不可变,而且每次对String进行操作时,都会生成新的对象,效率低,占用大量的内存,而在对StringBuffer进行操作时,不会生成新的对象,不会占用大量内存(默认分配16字节长度的缓冲区,当字符串超过该大小时,会自动增加缓冲区长度,而不是生成新的对象);最后对每个字符进行拼接操作。
举例:
int[] num ={ 5, 2, 9, 45, 3, 6 };
System.out.println(Arrays.toString(num));
//[5, 2, 9, 45, 3, 6]