函数式编程part2-Lambda表达式

2.1 概述

  Lambda是JDK8中一个语法糖。

  他可以对某些匿名内部类的写法进行简化。

  它是函数式编程思想的一个重要体现。

  让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。

2.2 核心原则

  可推导 可省略

2. 3 基本格式

  (参数列表)->{代码}

  new Thread(()->{
  System.out.println("你知道吗 我比你想象的 更想在你身边");
          }).start();

 

只有函数式接口才可以被lambda表达式所使用

函数式接口是指只定义了一个抽象方法的接口,或者加了 @FunctionalInterface 注解的接口

四大函数式接口

四大函数式接口分别是:

    功能型函数接口(Function)  

      开源码知道传入参数和返回类型 传入什么返回什么。

      用匿名内部类new出函数式接口实现

复制代码
public static void main(String[] args) {
        Java8InnerFunction function=new Java8InnerFunction();
     
        int i1 = function.functionCompute(5, x -> x * 10);
        System.out.println("计算后的结果值是:"+i1);
    }
 
    public int functionCompute(int a,Function<Integer,Integer> function){
        return function.apply(a);
    }
复制代码

    消费型函数接口(Consumer)    

      消费者接口

      只有输入没有返回值

 public static void main(String[] args) {
        Java8InnerFunction function=new Java8InnerFunction();
        function.consumMoney(1000,x-> System.out.println("消费了:"+x+"元"));
    }
 
    public void consumMoney(int money, Consumer consumer){
        consumer.accept(money);
    }

    供给型函数式接口(Supplier)     

      没有参数只有返回值

      返回值类型为泛型。

复制代码
 public static void main(String[] args) {
        Java8InnerFunction function=new Java8InnerFunction();
        int i = function.supplyRandomNum(() -> 
             (int) (Math.random() * 100);
        );
        System.out.println("获得的随机数是:"+i);
    }
 
    public int supplyRandomNum(Supplier<Integer> supplier){
        return supplier.get();
    }
复制代码

    断言型函数式接口(Predicate)      

      传入泛型返回boolean类型

      断定形接口

复制代码
 public static void main(String[] args) {
        Java8InnerFunction function=new Java8InnerFunction();
       
        boolean b = function.predicateCompare(101, x -> x > 100);
        System.out.println("101比100大吗:"+b);
    }

   
    public boolean predicateCompare(int x,Predicate<Integer> predicate){
      return  predicate.filter(x);
 
    }
复制代码

 

2.4 省略规则

    • 参数类型可以省略

    • 方法体只有一句代码时大括号return和唯一一句代码的分号可以省略

    • 方法只有一个参数时小括号可以省略

    • 以上这些规则都记不住也可以省略不记

posted @   名泽  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示