Arrays类常用方法
binarySearch
对排好序的数组进行二分法查找
int[] arr = {32,2,3,543};
Arrays.sort(arr); // 2,3,32,543
int n = Arrays.binarySearch(arr, 3);
System.out.println(n); // 1
copyOf copyOfRange
copyOf拷贝数组
public static int[] copyOf(int[] original, int newLength)
第二个参数是新数组的长度。这个方法通常用来增加数组的大小
int[] copyArr = Arrays.copyOf(arr1, arr1.length*2);
如果数组元素是数值型,那么额外的元素将被赋值为0;如果数组元素是布尔型,则将赋值为false。相反,如果长度小于原始数组的长度,就只会拷贝前面的。
copyOfRange可是指定从一段范围来复制,而不一定是从头开始复制。
public static <T> T[] copyOfRange(T[] original,
int from,
int to)
首先看直接复值带来的问题
int[] arr = {2,3,5,6};
int[] arr2 = arr;
arr2[0] = 100; // now arr[0] is also 100;
System.out.println(arr[0]);
使用copyOf拷贝整个数组
int[] arr = {2,3,5,6};
int[] arr2 = Arrays.copyOf(arr, arr.length);
System.out.println(Arrays.toString(arr2));
toString
遍历一维数组,该方法是一个非常方便的调式方法。
int[] arr = {32,2,3,543};
System.out.println(Arrays.toString(arr));
// [32, 2, 3, 543]
deepToString
该方法可以用来遍历多维数组。
public static void main (String[] args) {
int[][] arrs = {
{32,2,3,543},
{3,23,43,23},
{123,3,24,6}
};
System.out.println(Arrays.deepToString(arrs));
// [[32, 2, 3, 543], [3, 23, 43, 23], [123, 3, 24, 6]]
}
equals
bool equals(arr1, arr2);
在java中,判断两个数组是否相等,需要使用Arrays.equals方法,而不能使用“==”。(String的比较也是一样)
int[] arr1 = {32,23,43};
int[] arr2 = {32,23,43};
if (Arrays.equals(arr1, arr2)) {
System.out.println(1);
}
fill
用指定值来填充数组 void Arrays.fill(数组, 填充值)
public static void main (String[] args) {
String[] strs = new String[5];
System.out.println(Arrays.toString(strs));
// [null, null, null, null, null]
Arrays.fill(strs, "");
System.out.println(Arrays.toString(strs));
// [, , , , ]
}
sort
采用优化后的快速排序算法对数组排序;该方法不能对字符串数组进行排序。
int[] arr = {32,2,3,543};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
// [2, 3, 32, 543]