• Arrays的用法(常见方法的使用)



    在这里插入图片描述

    🐌个人主页: 🐌 叶落闲庭
    💨我的专栏:💨
    c语言
    数据结构
    javaEE
    操作系统
    Redis

    石可破也,而不可夺坚;丹可磨也,而不可夺赤。


    一、 toString

    • toString:将数组变成字符串
     public static void main(String[] args) {
            int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10};
            System.out.println(Arrays.toString(arr));
        }
    
    • 1
    • 2
    • 3
    • 4

    二、 binarySearch

    • binarySearch:二分查找法查找元素
    public static void main(String[] args) {
            int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10};
            System.out.println(Arrays.binarySearch(arr, 10));
            System.out.println(Arrays.binarySearch(arr, 1));
            System.out.println(Arrays.binarySearch(arr, 0));
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    三、copyOf

    • copyOf:拷贝数组
    public static void main(String[] args) {
            int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10};
            int[] newArr = Arrays.copyOf(arr,10);
            System.out.println(Arrays.toString(newArr));
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    四、copyOfRange

    • copyOfRange:拷贝数组(指定范围)
    public static void main(String[] args) {
            int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10};
            int[] newArr = Arrays.copyOfRange(arr,0,5);
            System.out.println(Arrays.toString(newArr));
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三、 sort

    3.1 sort 细节

    • 只能给引用数据类型的数组进行排序
    • 如果数组是基本数据类型的,需要变成其对于的包装类
    • 第二个参数是一个接口,所以我们在调用方法的时候,需要传递这个接口的实现类对象,作为排序的规则
    • 但是这个实现类,只需要使用一次,所以就没有必要单独的去写一个类,直接采取匿名内部类的方式就可以了

    3.2 底层原理

    • 利用插入排序+二分查找的方式进行排序的
    • 默认把0索引的数据当做是有序的序列,1索引到最后认为是无序的序列
    • 通历无序的序列得到里面的每一个元素,假设当前遍历得到的元素是A元素
    • 把A往有序序列中进行插入,在插入的时候,是利用二分查找确定A元素的插入点
    • 拿着A元素,跟插入点的元素进行比较,比较的规则就是compare方法的方法体
    • 如果方法的返回值是负数,拿着A继续跟前面的数据进行比较
    • 如果方法的返回值是正数,拿着A继续跟后面的数据进行比较
    • 如果方法的返回值是0,也拿着A跟后面的数据进行比较
    • 直到能确定A的最终位置为止

    3.3 compare方法的形式参数及返回值

    • 参数一 o1:
      • 表示在无序序列中,遍历得到的每一个元素
    • 参数二 o2:
      • 有序序列中的元素
    • 返回值:
      • 负数:表示当前要插入的元素是小的,放在前面
      • 正数:表示当前要插入的元素是大的,放在后面
      • 0:表示当前要插入的元素跟现在的元素比是一样的们也会放在后面
    public static void main(String[] args) {
            Integer[] arr = new Integer[]{5,4,6,8,9,7,2,1,10,3};
            Arrays.sort(arr, new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    return o1 - o2;
                }
            });
            System.out.println(Arrays.toString(arr));
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    MyBatis中动态 SQL 语句-更复杂的查询业务需求
    大数据学习——Hadoop序列化
    【模拟】螺旋矩阵问题
    Minimum Snap闭式求解相关公式推导
    因子与质因子的关系
    华为云云耀云服务器L实例评测|华为云上安装监控服务Prometheus三件套安装
    延时任务-基于netty时间轮算法实现
    【VIM】VIm初步使用
    算法---消除游戏(Kotlin)
    【Linux】进程控制 —— 进程替换
  • 原文地址:https://blog.csdn.net/qq_64743563/article/details/133239954