文章目录
前言
Arrays 有非常多对数组的常用方法,都是静态方法,直接调用即可,非常推荐掌握。
一、Arrays
此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
二、使用
1.常用方法
Arrays该类的方法都有多个重载方法,不仅仅只是int类型,其他类也可以。我这里只是简单用int类型举例,其他类型也可以使用。
1.1 二分查找
binarySearch(int[] a, int key)
使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。
binarySearch(int[] a, int fromIndex, int toIndex, int key)
使用二分搜索法来搜索指定的 int 型数组的范围,以获得指定的值。
使用二分查找,进行查找指定元素。如果存在返回下标,如果不存在则返回 - (插入点+1)。
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// 二分查找
int i = Arrays.binarySearch(arr, 2);
System.out.println(i); // 1
// 二分查找
int i = Arrays.binarySearch(arr, 10);
System.out.println(i); // -10(-(可插入点+1))
// 二分查找(指定区间从下标0(包括)开始到下标5(不包括))
int i1 = Arrays.binarySearch(arr, 0, 5, 2);
System.out.println(i1); // 1
1.2 数组内容的字符串形式
toString(int[] a)
返回指定数组内容的字符串表示形式。
将字符串中的所有元素用字符串存起来。
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// 获取数组内容的字符串形式
String s = Arrays.toString(arr);
System.out.println(s); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
1.3 数组截取
copyOf(int[] original, int newLength)
复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。
从指定数组中,截取某个长度的数组。例如,下面 newArr 中的值是从 arr 中截取5个的元素。
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// 数组截取
int[] newArr = Arrays.copyOf(arr, 5);
System.out.println(Arrays.toString(newArr)); // [1, 2, 3, 4, 5]
1.4 指定范围数组截取
copyOfRange(int[] original, int from, int to)
将指定数组的指定范围复制到一个新数组。
指定一个范围的数组截取。例如,newArr为arr数组中的下标 0 (包含)到 5 (不包含)的截取。
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// 指定范围数组截取
int[] newArr = Arrays.copyOfRange(arr, 1, 5);
System.out.println(Arrays.toString(newArr)); // [2, 3, 4, 5]
1.5 比较
equals(int[] a, int[] a2)
如果两个指定的 int 型数组彼此相等,则返回 true。
如果两个数组元素及元素顺序相等,则返回true(两个数组都为 null 时也返回 true)。
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] arr2 = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// 比较数组是否相等
boolean equals = Arrays.equals(arr, arr2);
System.out.println(equals);
1.6 填充数组
fill(int[] a, int val)
将指定的 int 值分配给指定 int 型数组的每个元素。
fill(int[] a, int fromIndex, int toIndex, int val)
将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。
可以全部填充,也可以将指定范围内的数组填充成指定值。
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// 指定数字填充指定范围元素
Arrays.fill(arr, 0, 3, 0); // 从下标1(包含)开始填充3(不包含)
System.out.println(Arrays.toString(arr)); // [1, 0, 0, 4, 5, 6, 7, 8, 9]
// 填充数组中所有元素
Arrays.fill(arr, 9);
System.out.println(Arrays.toString(arr)); // [9, 9, 9, 9, 9, 9, 9, 9, 9] 9]
1.7 数组排序
sort(int[] a)
对指定的 int 型数组按数字升序进行排序。
sort(int[] a, int fromIndex, int toIndex)
对指定 int 型数组的指定范围按数字升序进行排序。
可以全部排序,也可以将指定范围内的排序。(该排序算法是一个经过调优的快速排序法)
int[] arr = {1, 3, 5, 2, 4, 6};
// 指定范围排序
Arrays.sort(arr, 2, 6); // 将下标2(包含) 到6(不包含)的元素排序
System.out.println(Arrays.toString(arr)); // [1, 3, 2, 4, 5, 6]
// 排序(默认升序)
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // [1, 2, 3, 4, 5, 6]
1.8 数组转list
asList(T… a) 返回由指定数组支持的固定大小的列表。
数组转成list
Integer[] ints = {1,2,3};
List<Integer> integers = Arrays.asList(ints);
System.out.println(integers);
最后
以上就是Arrays的常用方法,这个类提供的方法非常常用。
相关
更多常用类请查看:【Java SE 常用类】目录