• Java#27(Arrays)


    目录

    一.Arrays

    操作数组的工具类

    二.Lambda表达式

    1.注意:

    2.省略规则


    一.Arrays

    操作数组的工具类

                                    方法名                                                               作用
    public static String toString(数组)                                       把数组拼接成一个字符串
    public static int binarySearch(数组,查找的元素)                 二分查找法查找元素
    public static int[ ] copyof(原数组,新数组长度)                                拷贝数组
    public static int[ ] copyofRange(原数组,起始索引,结束索引)   拷贝数组(指定范围)
    public static void fill(数组,元素)                                                        填充数组
    public static void sort(数组)                                                按照默认方式进行数组排序
    public static void sort(数组,排序规则)                                    按照指定的规则排序

    代码示范: 

    1. package ArrayDemo;
    2. import java.util.Arrays;
    3. public class ArrayDemo1 {
    4. public static void main(String[] args) {
    5. //1.Arrays.toString
    6. int[] arr = {1,2,3,4,5,6,7,8,9,10};
    7. System.out.println(Arrays.toString(arr));
    8. //2.Arrays.binarySearch的使用,数组必须是有序的
    9. System.out.println(Arrays.binarySearch(arr, 5));
    10. //3.Arrays.copyOf拷贝时,新数组的长度大于就数组,多出的部分会默认添加初始值
    11. //新数组小于旧数组的话就会是部分拷贝
    12. int[] arr1 = Arrays.copyOf(arr,11);
    13. System.out.println(Arrays.toString(arr1));
    14. //4.Arrays.copyOfRange拷贝时,包左不包右,索引6对应的是数据7
    15. int[] arr2 = Arrays.copyOfRange(arr,2,6);
    16. System.out.println(Arrays.toString(arr2));
    17. //5.Arrays.fill
    18. int[] arr3 = new int[10];
    19. Arrays.fill(arr3,5);
    20. System.out.println(Arrays.toString(arr3));
    21. //6.Arrays.sort,使用时默认是快速排序,升序
    22. int[] arr4 = {1,4,67,3,2,5,7};
    23. Arrays.sort(arr4);
    24. System.out.println(Arrays.toString(arr4));
    25. }
    26. }

    结果展示:

     public static void sort(数组,排序规则)

    底层原理:
    利用插入排序 + 二分查找的方式进行排序的
    默认把0索引的数据当做是有序的序列,1索引到最后认为是无序的序列

    遍历无序的序列得到里面的每一个元素,假设当前遍历得到的元素是A元素

    把A往有序序列中进行插入,在插入的时候,是利用二分查找确定A元素的插入点

    拿着A元素,跟插入点的元素进行比较,比较的规则就是compare方法的方法体

    如果方法的返回值是负数,拿着A继续跟前面的数据进行比较

    如果方法的返回值是正数,拿着A继续跟后面的数据进行比较

    如果方法的返回值是9,也拿着A跟后面的数据进行比较

    直到能确定A的最终位置为止

    compare方法的形式参数:
    参数一 o1:表示在无序序列中,遍历得到的每一个元素

    参数二 o2:有序序列中的元素
    返回值:
    负数: 表示当前要插入的元素是小的,放在前面

    正数:表示当前要插入的元素是大的,放在后面

    0: 表示当前要插入的元素跟现在的元素比是一样的们也会放在后面

    简单理解:

    o1 - o2: 升序排序

    o2 - o1: 降序排序 

    二.Lambda表达式

    1.注意:

    (1)Lambda表达式可以用来简化匿名内部类的书写

    (2)Lambda表达式只能简化函数式接口的匿名内部类的写法

    (3)函数式接口:有且仅有一个抽象方法的接口叫做函数式接口,接口上可以加@FunctionalInterface注解

    2.省略规则

    (1)参数类型可以不写

    (2)只有一个参数,参数类型可以省略,同时( )也可以省略

    (3)如果Lambda表达式的方法体只有一行,大括号,分号,return可以省略不写,但需要同时省略

    代码示范:

    1. package Demo;
    2. public class Test {
    3. public static void main(String[] args) {
    4. //匿名内部类
    5. //之前的写法
    6. method(new swim() {
    7. @Override
    8. public void swimming() {
    9. System.out.println("正在游泳1");
    10. }
    11. });
    12. //Lambda的写法
    13. method(()-> {
    14. System.out.println("正在游泳2");
    15. }
    16. );
    17. }
    18. public static void method(swim s){
    19. s.swimming();
    20. }
    21. }
    22. //函数式接口
    23. interface swim{
    24. public abstract void swimming();
    25. }

    结果展示:

  • 相关阅读:
    jenkins使用docker安装保姆级教程(面向小白教程,最新最全,全图文)2022-8-1,不会docker也没关系
    mac里提示‘.bash_profile’: not a valid identifier,该怎么处理
    【安全测试学习】自动化注入攻击之 FuzzDB和Burp 组合拳
    【vendor】Go 包依赖管理工具govendor
    cesium影像推送
    IPv6实现内网穿透,极低成本保姆级教程
    第八天:gec6818arm开发板和Ubuntu中安装并且编译移植mysql驱动连接QT执行程序
    类与对象练习一
    tg群组内容怎么更新到网页
    【Linux】基础开发工具——gcc/g++使用
  • 原文地址:https://blog.csdn.net/guaiwu_/article/details/128053284