06-JAVA常用API-Arrays Lambda表达式

文章介绍了Java中Arrays类的一些常用方法,如toString()用于将数组转换为字符串,binarySearch()执行二分查找,copyOf()和copyOfRange()用于数组拷贝,fill()填充数组,以及sort()排序数组。此外,还讲解了Lambda表达式的使用,如何简化匿名内部类,特别是对于函数式接口的操作,强调了其在简化代码和提高可读性方面的作用。
摘要由CSDN通过智能技术生成

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(数组,排序规则)按照指定的规则排序
        //Tostring:将数组变成字符串
        System.out.println("----------tostring----------");
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        System.out.println(Arrays.toString(arr));
        //binarySearch:二分法查找元素
        //细节1:二分查找的前提:数字中的元素必须是有序的,数组中的元素必须是升序
        //细节2:如果要查找的元素是寻存在的,那么返回的是真是的索引
        //但是,如果查找的元素是不存在的,那么返回的是-插入点 - 1
        //疑问:为什么要减一
        //解释:如果此时,那么如果返回的值是-插入点,就会出现问题了
        //如果要查找的数字是0的话,此时0是不存在的,但是按照上面的规则-插入点,应该是-0
        //为了避免这样的情况,Java在这个基础上减一
        System.out.println("----------binarySearch----------");
        System.out.println(Arrays.binarySearch(arr, 10));
        System.out.println(Arrays.binarySearch(arr, 1));
        System.out.println(Arrays.binarySearch(arr, 2));
        //copyOf:拷贝数组
        System.out.println("----------copyOf----------");
        int[] arr1 = Arrays.copyOf(arr, 10);
        System.out.println(Arrays.toString(arr1));
        System.out.println("----------copyOfRange----------");
        //包含0索引不包含9索引
        int[] arr2 = Arrays.copyOfRange(arr, 0, 9);
        System.out.println(Arrays.toString(arr2));
        //fill:填充数组
        System.out.println("----------fill----------");
        Arrays.fill(arr, 100);
        System.out.println(Arrays.toString(arr));
        //sort:排序,默认情况下,给基本数据类型进行升序
        System.out.println("----------sort----------");
        int[] arrA={1,4,3,2,7,5,9,10,8};
        Arrays.sort(arr2);
        System.out.println(Arrays.toString(arr2));

lambda表达式的作用为简化匿名内部类:

原:

    public static void main(String[] args) {
        Integer[] arr = {1,4,2,7,9,5};
        Arrays.sort(arr, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1-o2;
            }
        });
        System.out.println(Arrays.toString(arr));
    }

简化后:

  Arrays.sort(arr,(Integer o1,Integer o2)->{
            return o1 -o2;
        });
        System.out.println(Arrays.toString(arr));
    }
}

函数式编程:

函数式编程是一种思想特点.

面向对象:先找对象,让对象做事情.

函数式编程思想,忽略面向对象的复杂语法,强调做什么,而不是谁去做.

就是我们要学习的lamnda表达式

lambda表达式可以用来简化匿名内部类的书写

lambda表达式只能简化函数式接口的匿名内部类的写法

函数式接口:

有且仅有一个抽象方法的接口叫做函数式接口,接口上方可以用@Functionallnterface

省略核心:可推导,可省略

1.参数类型可以省略不写

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

3.如果lambda表达式的方法只有一种:大括号,分号,return可以省略不写,需要同时省略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值