JAVA基础(Arrays类)

1,Arrays类概述

  • 针对数组进行操作的工具类。

  • 提供了排序,查找等功能。

2,成员方法

【1】 数组转字符串      

  • public static String toString(int[] a) 

       //toString的源码

        public static String toString(int[] a) {

                if (a == null)                                //如果传入的数组是null

                    return "null";                            //返回null

                int iMax = a.length - 1;                    //iMax最大索引

                if (iMax == -1)                                //如果数组中没有元素

                    return "[]";                            //返回[]

        

                StringBuilder b = new StringBuilder();        //线程不安全,效率高

                b.append('[');                                //将[添加到字符串缓冲区中

                for (int i = 0; ; i++) {                    //遍历数组,判断语句没有写默认是true

                    b.append(a[i]);                            //把第一个元素添加进字符串缓冲区

                    if (i == iMax)                            //如果索引等于了最大索引值

                        return b.append(']').toString();    //将]添加到字符串缓冲区,在转换成字符串并返回

                    b.append(", ");                            //如果不等于最大索引就将, 添加到缓冲区

                }

            }

【2】数组排序            

  • public static void sort(int[] a) 

【3】 二分查找            

  • public static int binarySearch(int[] a,int key)
    
            //binarySearch0源码
    
             private static int binarySearch0(int[] a, int fromIndex, int toIndex,
    
                                         int key) {
    
                    int low = fromIndex;                //最小索引0
    
                    int high = toIndex - 1;                //最大索引数组长度-1
    
            
    
                    while (low <= high) {                //最小索引小于等于最大索引可以循环判断
    
                        int mid = (low + high) >>> 1;    //求出中间索引值,(最小+最大)/2
    
                        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.//-插入点 - 1
    
                }

3,实现代码

import java.util.Arrays;

public class Demo3_Arrays {



    public static void main(String[] args) {

        int[] arr = {33,22,11,44,66,55};

        System.out.println(Arrays.toString(arr));            //数组转字符串

        

        Arrays.sort(arr);                                    //排序

        System.out.println(Arrays.toString(arr));

        

        int[] arr2 = {11,22,33,44,55,66};

        System.out.println(Arrays.binarySearch(arr2, 22));

        System.out.println(Arrays.binarySearch(arr2, 66));

        System.out.println(Arrays.binarySearch(arr2, 9));    //-插入点-1

    }

}



猜你喜欢

转载自blog.csdn.net/Cricket_7/article/details/92413352