JAVA ---> Arrays、Lambda表达式及练习

本文介绍了Java8中的Lambda表达式,包括其在Comparator接口中的简化使用,函数式编程思想的应用,以及通过实例演示如何在Arrays.sort方法中使用Lambda。还涉及了练习题,如字符串比较、斐波那契数列和爬楼梯问题的解决方法。
摘要由CSDN通过智能技术生成

参考:集合进阶-01-单列集合顶层接口Collection_哔哩哔哩_bilibili

目录

Arrays

重载的sort方法

Lambda表达式

​函数式编程

总结

Lambda表达式简化Comparator接口的匿名形式

 练习题

第一题

第二题 不死神兔

第三题 猴子吃桃子

第四题 爬楼梯


Arrays

操作数组的工具类

重载的sort方法

 

 

Lambda表达式

 函数式编程

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

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

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

Lambda表达式是JDK8开始后的一种新语法形式

如果满足函数式接口的要求,加上注解后不会报错;如果不满足要求,加上注解后会报错。

调用一个方法的是时候,如果方法的形参是一个接口,那么我们要传递这个接口的实现类对象,如果实现类对象只要用到一次,就可以用匿名内部类的形式进行书写。

总结

Lambda表达式的基本作用:简化函数式接口的匿名内部类的写法

Lambda表达式有什么使用前提:必须是接口的匿名内部类,接口中只能有一个抽象方法

Lambda的好处:Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧凑的代码风格,使java语言表达嫩里得到了提升。

Lambda表达式的省略写法

 省略核心:可推到可省略

Lambda省略规则:

  1. 参数类型可以省略不写
  2. 如果只有一个参数,参数类型可以省略,同时()也可以省略
  3. 如果Lambda表达式的方法体只有一行,大括号、分号、return可以省略不写,需要同时省略。

Lambda表达式简化Comparator接口的匿名形式


 练习题

 字符串比较:

第一题

 测试类:

public class Test1 {
    public static void main(String[] args) {
        GirlFriend gf1 = new GirlFriend("xiaoshishi", 18, 1.67);
        GirlFriend gf2 = new GirlFriend("xiaodandan", 19, 1.72);
        GirlFriend gf3 = new GirlFriend("abc", 19, 1.78);

        GirlFriend[] arr = {gf1, gf2, gf3};
        Arrays.sort(arr, (o1, o2) -> {
                //排序规则
                double temp = o1.getHeight() - o2.getHeight();
                temp = temp == 0 ? o1.getHeight() - o2.getHeight() : temp;
                temp = temp == 0 ? o1.getName().compareTo(o2.getName()) : temp;
                if(temp > 0){
                    return 1;
                }else if(temp < 0){
                    return -1;
                }else{
                    return 0;
                }
        });

        System.out.println(Arrays.toString(arr));
    }
}

第二题 不死神兔

特点:从第三个数据开始,是前两个数据和(斐波那契数列)

第三题 猴子吃桃子

public class Test3 {
    public static void main(String[] args) {

        System.out.println(getSum(9));
    }

    public static int getSum(int day){

        if(day == 10){
            return 1;
        }
        return (getSum(day + 1) + 1 )* 2;
    }
}

第四题 爬楼梯

如果将题目改为:

有时候一次爬一个台阶,有时候一次爬两个台阶,有时候一次爬三个台阶

public class Test4 {
    public static void main(String[] args) {
        System.out.println(getCount(20));
    }

    private static int getCount(int n) {
        if(n == 1){
            return 1;
        }
        if(n == 2 ){
            return 2;
        }
        if(n == 3){
            return 4;
        }
        return getCount(n - 1) + getCount(n - 2) + getCount(n - 3);
    }
}

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值