天天看点

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

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

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

更多架构课程请访问 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);
        }
               

干货文档

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

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

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