常见对象_Arrays工具类的源码解析

来源:互联网 发布:恢复中国国籍 知乎 编辑:程序博客网 时间:2024/04/30 09:26
工具类有的尽量用工具类中的方法 public static String toString(int[] a)public static void sort(int[] a) 底层是快速排序,知道就可以了。有人就百度看。public static int binarySearch(int[] a,int key)开发原则只要是对象,我们就要判断该对象是否为null。int[] arr = { 24, 69, 80, 57, 13 };System.out.println("排序前:" + Arrays.toString(arr)); public static String toString(int[] a) { // a -- arr -- { 24, 69, 80, 57, 13 }        if (a == null)            return "null";//说明数组对象不存在int iMax = a.length - 1;//iMax = 4;if (iMax == -1)            return "[]";//说明数组存在,但是没有元素。        StringBuilder b = new StringBuilder();        b.append('[');//"["        for (int i = 0; ; i++) {            b.append(a[i]);//"[24, 69, 80, 57, 13"    if (i == iMax)    //"[24, 69, 80, 57, 13]"return b.append(']').toString();            b.append(", ");//"[24, 69, 80, 57"        }    }-------------------------------------------------------int[] arr = {13, 24, 57, 69, 80}System.out.println("binarySearch:" + Arrays.binarySearch(arr, 699)); //a -- arr -- {13, 24, 57, 69, 8} //key -- 577 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) {//a -- arr -- {13, 24, 57, 69, 8}//fromIndex -- 0//toIndex -- 5//key -- 577          int low = fromIndex;//low = 0int high = toIndex - 1;//high = 4while (low <= high) {    int mid = (low + high) >>> 1;//mid = 2 (无符号右移!左边填充0!4>>>1=2),mid = 3,mid = 4    int midVal = a[mid];//midVal = 57,minVal = 69,minVal = 80    if (midVal < key)low = mid + 1;//low = 3,low = 4,low = 5,    else if (midVal > key)high = mid - 1;    elsereturn mid; // key found}return -(low + 1);  // key not found.    } 

0 0
原创粉丝点击