java.util.Arrays是一个用来操作数组的工具类,包括了比较、排序、搜索等各种方法。
下面用简单的例子演示一下:
Arrays.toString(数组名) 返回指定数组内容的字符串表示形式
Arrays.deepToString(数组名) 返回指定数组“深层”内容的字符串表示形式(深层表示二维及以上的多维数组)
public static void main(String[] args) {
String[] arr1={"我","喜欢","很多钱","真的"};
String[] arr2={"我","喜欢","很多钱","真的"};
int[][] arr3={{123,234},{12,23,34},{0}};
int[][] arr4={{123,234},{12,23,34},{0}};
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr3));
System.out.println(Arrays.deepToString(arr3));
}
运行结果:
Arrays.equals(数组名1,数组名2) 比较两个数组内容是否相等,相等返回true
Arrays.deepEquals(数组名1,数组名2) 比较两个数组“深层”内容是否相等,相等返回true
System.out.println(Arrays.equals(arr1, arr2));
System.out.println(Arrays.deepEquals(arr3, arr4));
System.out.println(Arrays.equals(arr3, arr4)); //比较的是数组中存储的地址
运行结果:
Arrays.copyOf(原数组名,新数组长度) 从0下标截取原数组的一定长度,返回一个新数组
Arrays.copyOfRange(原数组名,开始下标,结束下标) 从开始下标截取到结束下标(不包含),返回一个新数组
System.out.println(Arrays.toString(Arrays.copyOf(arr1, 3)));
System.out.println(Arrays.toString(Arrays.copyOfRange(arr1, 1,3)));
运行结果:
Arrays.fill(数组名, 数据) 将该数据分配并替换到该数组的每个空间元素
Arrays.fill(数组名,开始下标,结束下标,数据) 将该数据分配并替换到该数组指定的范围(开始下标到结束下标(不包含))
Arrays.fill(arr1, "哈哈");
System.out.println(Arrays.toString(arr1));
Arrays.fill(arr1,1,3, "呵呵");
System.out.println(Arrays.toString(arr1));
运行结果:
Arrays.sort(数组名) 对数组进行升序排序
Arrays.sort(数组名,开始下标,结束下标) 对数组从指定范围(开始下标到结束下标(不包含))进行升序排序
int[] arr111={3,1,7,4,6,2};
Arrays.sort(arr111);
System.out.println(Arrays.toString(arr111));
int[] arr222={3,1,7,4,6,2};
Arrays.sort(arr222,1,4);
System.out.println(Arrays.toString(arr222));
运行结果:
Arrays.binarySearch(数组名,数据) 首先要进行升序排序,然后该方法返回当前数组中该数据所对应的下标,若没有该数据,返回(-插入点)-1
int[] arr111={3,1,7,4,6,2};
Arrays.sort(arr111);
System.out.println(Arrays.toString(arr111));
int[] arr222={3,1,7,4,6,2};
Arrays.sort(arr222,1,4);
System.out.println(Arrays.toString(arr222));
//首先要进行升序排序,才能使用二分法查找
System.out.println(Arrays.binarySearch(arr111,6));
System.out.println(Arrays.binarySearch(arr111,5)); //没有5这个数,返回的是如果有5这个数,他应该所在位置的下标的负数减1
运行结果: