美文网首页
32.Arrays类

32.Arrays类

作者: 每天起床都想摆 | 来源:发表于2022-02-19 23:58 被阅读0次

Arrays类

Arrays类概述,常用功能

  • Arrays类指代数组操作工具类,专门用于操作数组元素的

  • Arrays类常用API

    方法名 说明
    public static String toString(类型[] a) 对数组进行排序
    public static void sort(类型[] a) 对数组进行默认升序排序
    public static <T> void sort(类型[] a, Comparator<? super T>c) 使用比较器对象自定义排序
    public static int binarySearch(int[] a, int key) 二分搜索数组中的数据(数组必须先完成排序),存在返回索引,不存在返回-1
  • 测试代码:

    package com.java.arrays_test;
    
    import java.util.Arrays;
    
    public class ArraysDemo01 {
        public static void main(String[] args) {
            int[] arr = {10, 20, 30, 40, 50, 11, 22, 33, 44, 55};
            System.out.println(arr);        // 返回地址
            String rs = Arrays.toString(arr);
            System.out.println(rs);         // 打印数组元素
    
            Arrays.sort(arr);   // 对数组进行排序(升序)
            System.out.println(Arrays.toString(arr)); // 返回数组中的内容
    
            //二分搜索(前提是必须已经完成排序)
            int index = Arrays.binarySearch(arr, 33);
            System.out.println(index);
    
            // 插入不存在的值时,返回:-(应该插入的位置索引 + 1)
            int index1 = Arrays.binarySearch(arr, 99);
            System.out.println(index1);
        }
    }
    
    

Arrays类对于Comparator比较器的支持

自定义排序规则

  • 设置Comparator接口对应的比较器对象,来定制比较规则

    如果认为:

    1. 左边数据 大于 右边数据 返回正整数
    2. 左边数据 小于 右边数据 返回负整数
    3. 左边数据 等于 右边数据 返回0
  • 测试代码:

    package com.java.arrays_test;
    
    import java.util.Arrays;
    import java.util.Comparator;
    
    public class ArraysDemo02 {
        public static void main(String[] args) {
            // 1.Arrays的sort方法对于有值特性的数组是默认升序排序的
            int[] ages = {1, 43, 432, 1, 4, 21, 52, 346, 123};
    
            // 2.需求:降序排序    需要先new出比较器对象,只能支持引用类型
            Integer[] age = {1, 43, 432, 1, 4, 21, 52, 346, 123};
            /*
            参数一:被排序的数组
            参数二:匿名内部类对象,代表一个比较器对象
             */
            Arrays.sort(age, new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    return o2 - o1; //降序排序
                    // return o1 - 02 默认排序
                }
            });
    
            System.out.println("-----------------");
            Student[] stu = new Student[3];
            stu[0] = new Student("张三", 175);
            stu[1] = new Student("李四", 185);
            stu[2] = new Student("王五", 195);
            System.out.println(Arrays.toString(stu));
    
            Arrays.sort(stu, new Comparator<Student>() {
                @Override
                public int compare(Student o1, Student o2) {
                    // 自己指定比较规则
    
                    //return (int) (o1.getHeight() - o2.getHeight()); // 以身高升序排序
                    //return (int)(o2.getHeight() - o1.getHeight()); // 以身高降序排序
                    return Double.compare(o2.getHeight(),o1.getHeight());  //降序
                    // 可以使用这种形式比较浮点型
                }
            });
            System.out.println(Arrays.toString(stu));
        }
    }
    
    

相关文章

网友评论

      本文标题:32.Arrays类

      本文链接:https://www.haomeiwen.com/subject/lksmlrtx.html