1. boolean equals(int a[],int b[]) //判断两个数组是否相等
int arr1[]=new int[]{1,2,3,4};
int arr2[]=new int[]{1,3,2,4};
boolean isEquals=Arrays.equals(arr1,arr2);
System.out.println(isEquals); //false
源码如下:
public static boolean equals(int[] a, int[] a2) {
if (a==a2)
return true;
if (a==null || a2==null)
return false;
int length = a.length;
if (a2.length != length)
return false;
return ArraysSupport.mismatch(a, a2, length) < 0;
}
2.String toString(int[] a) //输出数组信息
int arr[]=new int[]{1,2,3,4};
System.out.println(Arrays.toString(arr));
源码如下:
public static String toString(int[] a) {
if (a == null)
return "null";
int iMax = a.length - 1;
if (iMax == -1)
return "[]";
StringBuilder b = new StringBuilder();
b.append('[');
for (int i = 0; ; i++) {
b.append(a[i]);
if (i == iMax)
return b.append(']').toString();
b.append(", ");
}
}
3.void fill(int[] a,int val) //将指定值填充到数组之中
int arr[]=new int[]{1,2,3,4};
Arrays.fill(arr,10); //将指定值填充到数组之中
System.out.println(Arrays.toString(arr)); //输出数组信息
//结果为:10,10,10,10
源代码如下:
public static void fill(int[] a, int val) {
for (int i = 0, len = a.length; i < len; i++)
a[i] = val;
}
4.void sort(int[] a) //对数组进行排序
int arr[]=new int[]{3,1,4,,2};
Arrays.sort(arr); //对数组进行排序
System.out.println(Arrays.toString(arr)); //输出数组信息
//结果为:1,2,3,4
源代码为:
public static void sort(int[] a) {
DualPivotQuicksort.sort(a, 0, 0, a.length);
}
static void sort(int[] a, int parallelism, int low, int high) {
int size = high - low;
if (parallelism > 1 && size > MIN_PARALLEL_SORT_SIZE) {
int depth = getDepth(parallelism, size >> 12);
int[] b = depth == 0 ? null : new int[size];
new Sorter(null, a, b, low, size, low, depth).invoke();
} else {
sort(null, a, 0, low, high);
}
}
5.int binaryaySearch(int[] a,int key) //对排序后的数组进行二分法检索指定的值
int arr[]=new int[] {1,2,3,4,5,6,7,8,9,10};
int index=Arrays.binarySearch(arr, 6);
if(index>=0) {
System.out.println(index);
}else {
System.out.println("未找到");
}
//结果为:5
源代码为:
public static int binarySearch(int[] a, int key) {
return binarySearch0(a, 0, a.length, key);
}
private static int binarySearch0(int[] a, int fromIndex, int toIndex,
int key) {
int low = fromIndex;
int high = toIndex - 1;
while (low <= high) {
int mid = (low + high) >>> 1;
int midVal = a[mid];
if (midVal < key)
low = mid + 1;
else if (midVal > key)
high = mid - 1;
else
return mid; // key found
}
return -(low + 1); // key not found.
}