java学习日记20230407-Arrays类

Arrays类

  • Arrays里面包含了一系列静态方法,用于管理和操作数组,比如排序和搜索;
  • toString返回数组的字符串形式
  • sort排序(自然排序和定制排序)
  • binarySearch通过二分搜索法进行查找,要求必须排好序
  • copyOf数组元素的复制
  • fill数组元素的填充
  • equals比较两个数组元素内容是否完全一致
  • asList将一组值,转化为list
  • public class ArraysMethods {
        public static void main(String[] args) {
            Integer[] integers = {1,20,30};
            //toString
            System.out.println(Arrays.toString(integers));
            //sort排序
            Integer[] integers1 = {1,-1,7,0,89};
            Arrays.sort(integers1);
            //实现了Comparator接口的匿名内部类
            //体现了接口编程的概念
            //源码分析:sort-binarySort-compare(通过匿名内部类来实现排序的逻辑),动态绑定
            Arrays.sort(integers1, new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    return o2-o1;
                }
            });
            System.out.println(Arrays.toString(integers1));
    
            Integer[] integer3 = {-1,-2,1,0,3};
            bubble02(integer3, new Comparator() {
                @Override
                public int compare(Object o1, Object o2) {
                    return (int)o1 - (int)o2;
                }
            });
            //如果数组中不存在,则返回 -(low+1)
            System.out.println(Arrays.binarySearch(integer3,2));
            System.out.println(Arrays.toString(integer3));
    
            //copyof数组元素复制,如果长度增加,则插入null
            //如果长度小于0,则发生异常 NegativeArraySizeException
            Integer[] newInteger = Arrays.copyOf(integer3,10);
            System.out.println(Arrays.toString(newInteger));
    
            //fill数组填充
            Integer[] fillInt = new Integer[]{3,4,5};
            Arrays.fill(newInteger,2);
            System.out.println(Arrays.toString(newInteger));
    
            //equals比较数组,true/false
            Integer[] newAr01 = {1,3,2};
            Integer[] newAr02 = Arrays.copyOf(newAr01,newAr01.length);
            Arrays.sort(newAr01, new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    return (int)o2 - (int)o1;
                }
            });
            System.out.println(Arrays.toString(newAr01));
            System.out.println(Arrays.toString(newAr02));
            System.out.println(Arrays.equals(newAr01,newAr02));
    
            //adList 数组转化为List
            List<Integer> asList = Arrays.asList(newAr01);
            System.out.println(asList);
            System.out.println(asList.getClass());
        }
        //冒泡排序
        public static void bubble01(int[] arr){
            int temp = 0;
            for (int i = 0; i < arr.length-1; i++) {
                for (int j = 0; j < arr.length-i-1; j++) {
                    if(arr[j]>arr[j+1]){
                        temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                    }
                }
            }
        }
        //模拟匿名内部类实现排序重写
        public static void bubble02(Integer[] arr, Comparator c){
            int temp = 0;
            for (int i = 0; i < arr.length-1; i++) {
                for (int j = 0; j < arr.length-i-1; j++) {
                    if(c.compare(arr[j],arr[j+1])>0){
                        temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                    }
                }
            }
        }
    }

     

posted @ 2023-04-06 00:09  、子夜  阅读(13)  评论(0)    收藏  举报