首页 > 编程语言 >函数式编程part2-Lambda表达式

函数式编程part2-Lambda表达式

时间:2023-07-19 22:13:01浏览次数:37  
标签:function Java8InnerFunction int 编程 接口 part2 new public 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和唯一一句代码的分号可以省略

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

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

标签:function,Java8InnerFunction,int,编程,接口,part2,new,public,Lambda
From: https://www.cnblogs.com/wegop/p/17566912.html

相关文章

  • python系列教程210——嵌套lambda
    声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值......
  • 【雕爷学编程】Arduino动手做(164)---Futaba S3003舵机模块3
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题......
  • Python——并发编程
     1.系统知识     操作系统是计算机系统的核心软件之一,负责管理和控制计算机的硬件资源,以及提供各种功能和服务。操作系统包括硬件管理和资源分配等方面的功能,同时由五个主要的子系统组成:文件系统、进程调度、内存管理、网络接口和进程通信。    1.1五个子系统 ......
  • 并发编程 ---- 信号量线程同步
    合集-c#基础(6) 1.编码技巧---如何实现字符串运算表达式的计算07-122.编码技巧---同步锁对象的选定07-133.解读---yield关键字07-174.并发编程---信号量线程同步07-185.并发编程---为何要线程池化07-186.编码技巧---谨防闭包陷阱07-19收起 引言上......
  • 并发编程 ----为何要线程池化
    合集-c#基础(6) 1.编码技巧---如何实现字符串运算表达式的计算07-122.编码技巧---同步锁对象的选定07-133.解读---yield关键字07-174.并发编程---信号量线程同步07-185.并发编程---为何要线程池化07-186.编码技巧---谨防闭包陷阱07-19收起 引言众......
  • 函数式编程-part1概述和理解
    为什么学?能够看懂公司里的代码大数量下处理集合效率高,因为有并行流,而自己创建处理会有很多问题代码可读性高消灭嵌套地狱本系列将从Lambda表达式、Stream流、Optional、函数式接口、方法引用等顺序开始讲解//查询未成年作家的评分在70以上的书籍由于洋流影响所......
  • JUC并发编程(1)—CompletableFuture详解
    @目录CompletableFuture介绍1.创建异步任务2.CompletableFutureAPI①.获得结果和触发计算(get、getNow、join、complete)②.对计算结果进行处理(thenApply、handle)③.对计算结果进行消费(thenRun、thenAccept、thenApply)④.对计算速度进行选用(applyToEither、acceptEither......
  • 2023“钉耙编程”中国大学生算法设计超级联赛(1)
    1001Hide-And-SeekGame题意:给出一颗树,两人在树上特定两点来回走,问最早在那个节点相遇思路:枚举所有点,看它是否同时在两条链上,如果在,那么结合周期、两人最早到达时间,返回到达时间得到4个同余方程(拓展欧几里得),然后得到最小可能解#pragmaGCCoptimize(2)#pragmaGCCoptimize(3......
  • 网络编程 p4 TCP编程
    TCP编程基本介绍基于客户端——服务端的网络通信;底层使用的是TCP/IP协议;应用场景举例:客户端发送数据,服务端接收并显示在控制台;基于Socket的TCP编程;示意图netstat指令netstat-an可以查看当前主机网络情况,包括端口监听情况和网络连接情况;netstat-an|more......
  • MySQL技术内幕(SQL编程)
    MySQL技术内幕(SQL编程)MySQL是一种常用的关系型数据库管理系统,它具有高性能、可靠性和易用性。SQL编程是使用MySQL进行开发的基础,本文将介绍一些MySQL技术内幕和SQL编程的基本知识。连接数据库在使用MySQL之前,我们首先要连接数据库。MySQL提供了多种方式来连接数据库,其中一种常......