小滴课堂-学习笔记:(3)Java高级核心玩转JDK8 Lambda表达式

33 篇文章 0 订阅
3 篇文章 0 订阅

logo 愿景:"让编程不再难学,让技术与生活更加有趣"


更多架构课程请访问 xdclass.net

 

目录

第1集 Java新特性玩转 JDK8之 lambda表达式

第2集 Java新特性玩转JDK8之自定义函数式编程实战

干货文档


第1集 Java新特性玩转 JDK8之 lambda表达式

简介:讲解什么是函数式编程和什么是lambda表达式

  • 在JDK8之前,Java是不支持函数式编程的,所谓的函数编程,即可理解是将一个函数(也称为“行为”)作为一个参数进行传递, 面向对象编程是对数据的抽象(各种各样的POJO类),而函数式编程则是对行为的抽象(将行为作为一个参数进行传递)

  • java创建线程再熟悉不过了

    • jdk8之前创建线程

    new Thread(new Runnable() {
         @Override
         public void run() {
             System.out.println("小滴课堂学习Java架构教程");
         }
     });
    • jdk8之后Lambda表达式则只需要使用一句话

     new Thread(() -> System.out.println("小滴课堂学习Java架构教程"));
    

     

  • 集合容器里面的字符串排序 使用前

       List<String> list =Arrays.asList("aaa","ggg","ffff","ccc");
    ​
            Collections.sort(list, new Comparator<String>() {
                        @Override
                        public int compare(String a, String b) {
                            return b.compareTo(a);
                        }
                    }
            );
            for (String string : list) {
                System.out.println(string);
            }
    使用后
    
     List<String> list =Arrays.asList("aaa","ggg","ffff","ccc");
        Collections.sort(list, (a,b)->b.compareTo(a)
        );
        for (String string : list) {
            System.out.println(string);
        }
    

     

  • lambda表达式 使用场景(前提):一个接口中只包含一个方法,则可以使用Lambda表达式,这样的接口称之为“函数接口” 语法: (params) -> expression

    第一部分为括号内用逗号分隔的形式参数,参数是函数式接口里面方法的参数;第二部分为一个箭头符号:->;第三部分为方法体,可以是表达式和代码块
    ​
    参数列表 :
        括号中参数列表的数据类型可以省略不写
        括号中的参数只有一个,那么参数类型和()都可以省略不写
    ​
    方法体:
        如果{}中的代码只有一行,无论有返回值,可以省略{},return,分号,要一起省略,其他则需要加上
    好处: Lambda 表达式的实现方式在本质是以匿名内部类的方式进行实现
    
    重构现有臃肿代码,更高的开发效率,尤其是集合Collection操作的时候,后续会讲到
    
    
    

     

第2集 Java新特性玩转JDK8之自定义函数式编程实战

简介:玩转Lambda表达式,自定义lambda接口编程

  • 自定义lambda接口流程

    • 定义一个函数式接口 需要标注此接口 @FunctionalInterface,否则万一团队成员在接口上加了其他方法则容易出故障

    • 编写一个方法,输入需要操做的数据和接口

    • 在调用方法时传入数据 和 lambda 表达式,用来操作数据

  • 需求,定义一个可以使用加减乘除的接口 以前需要定义4个方法

    使用Lambda表达式后
    
    @FunctionalInterface
    public interface OperFunction<R,T> {
    ​
        R operator(T t1, T t2);
    ​
    }
        public static void main(String[] args) throws Exception {
    ​
            System.out.println(operator(20, 5, (Integer x, Integer y) -> {
                return x * y;
            }));
    ​
            System.out.println(operator(20, 5, (x, y) -> x + y));
            System.out.println(operator(20, 5, (x, y) -> x - y));
            System.out.println(operator(20, 5, (x, y) -> x / y));
        }
        public static Integer operator(Integer x, Integer y, OperFunction<Integer, Integer> of) {
            return of.operator(x, y);
        }
    

     

干货文档

                                                        关注公众号发送:“CSDN干货文档”  即可领取

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dev666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值