java常用类Arrays

java常用类Arrays

Arrays类:是针对数组操作的工具类,提供了排序、查找等功能
常用的成员方法:
public static String toString(int[] arr);   返回指定数组内容的字符串形式
public static void sort(int[] arr);      对指定int类型数组按数字升序进行排序
public static int binarySearch(int[] arr,int key);   使用二分法指定法来搜索指定的int 型数组,以获取指定的值
static boolean equals(int[] arr,int[] arr2);    比较两个数组中的元素是否一样
static int[] copyOf(int[] original,int newLength);   复制旧数组中的元素到一个新的数组中,新的数组长度是newLength 从0开始复制
static int[] copyOfRang(int[] original,int from,int to); 复制旧数组中的指定范围间的几个元素到新的数组中
class  MyTest{
    
    
    public static void main(String[] args){
    
    
        int[] arr={
    
    50,123,543,187,49,30,0,2,11,100};
        System.out.println(Arrays.toString(arr));
    }
    //Arrays类中toString(int[] a)的源码
	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(", ");
        }
    }
}
结果是

在这里插入图片描述

import java.util.Arrays;
class  MyTest{
    
    
    public static void main(String[] args) {
    
    
        int[] arr={
    
    1,2,3,4};
        int[] arr2={
    
    1,2,3,4};
        System.out.println(Arrays.equals(arr, arr2));
    }
    //Arrays类中equals(int[] a,int[] a2)的源码
    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;
        }
        for (int i = 0; i < length; i++) {
    
    
            if (a[i] != a2[i]) {
    
    
                return false;
            }
        }
        return true;
    }
}
结果是

在这里插入图片描述

class  MyTest{
    
    
    public static void main(String[] args) {
    
    
        //二分查找的数组前提必须是有序数组
        int[] arr={
    
    1,2,3,4,5,6,7,8,9};
        int i = Arrays.binarySearch(arr,8);
        System.out.println(i);
    }
    //Arrays类中equals(int[] a,int fromIndex, int toIndex,int 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.
    }
}
结果是

在这里插入图片描述

class  MyTest {
    
    
    public static void main(String[] args) {
    
    
        int[] arr={
    
    50,123,543,187,49,30,0,2,11,100};
        int[] ints = Arrays.copyOf(arr, 7);
        System.out.println(Arrays.toString(ints));
        int[] ints2 = Arrays.copyOfRange(arr, 3, 8);
        System.out.println(Arrays.toString(ints2));
    }
}
结果是

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_51717449/article/details/111305801