今日内容

  • 函数式接口
  • 函数式编程
  • 常见函数式接口

Lambda表达式

JDK1.8的新特性.

  • 语法糖:使用更加方便,但原理不变.foreach和迭代器.
  • Lambda和匿名内部类不同,匿名内部类会产生类型(可以产生.class文件),而Lambda不会产生类型.
    所以Lambda不是匿名内部类的语法糖!!!

Lambda格式:

  • () -> {}
  • 一些参数 一个指向 一段代码

使用Lambda的前提

Lambda只能操作函数式接口

Lambda省略规则

可推导,可省略 1.()中参数类型可以省略 2.()参数唯一,()可以省略 3.{}内语句唯一,{}可以省略.

函数式接口

  • 有且仅有一个抽象方法
  • 注解:@FunctionalInterface

函数式编程

Lambda的延迟执行

  • 解决方法调用时,字符串参数无论方法内逻辑是否成立,都会先进行拼接的浪费问题.
  • Lambda的延迟执行并不是Lambda自身的优点,延迟执行的效果是根据接口进行实现的.即:满足效果才会调用接口的方法

函数式接口作为方法的参数

new Thread( ()->{sout("嘿嘿嘿")} ).start();

函数式接口作为方法的返回值

直接Returm一个Lambda表达式.

  • public Comparator<String> getComparator(){ return ()->{}; }

常用的函数式接口

生产型接口()

  • Supplier接口
    <T> get();
  • 用来产生数据,带有返回值的.

消费型接口

  • Consumer接口
    1.抽象方法:void accept(T t);
    2.默认方法:Consumer<T> andThen(Consumer<? super T> after)
    如果一个方法的参数和返回值都是Consumer类型,消费一个数据的时候,首先做一个操作,然后再做一个操作,实现组合.
  • 不生产数据,只使用数据.
    消费数据就是使用数据

判断(筛选)型接口

  • Predicate接
    1.抽象方法:boolean test(T t)
    2.默认方法:

    • and
    • or
    • nagate (取反)
  • 需要对某种类型数据进行判断,从而得到一个boolean值.

转换型接口

  • Function接口
    1.抽象方法: R apply(T t);
    根据类型T的参数获取类型R的结果。
    2.默认方法:andThen()
    用来进行组合操作
  • 根据一个数据类型得到另一个数据类型,前者是前置条件,后者是后置条件.

day12【Lambda,函数式接口】Lamd相关推荐

  1. Java 8 - 03 Lambda 函数式接口Predicate Consumer Function Supplier

    文章目录 Pre Predicate 断言型函数式接口 Consumer 消费型函数式接口 Function 功能型函数式接口 Supplier 供给型函数式接口 小结 函数式接口如何处理异常信息 P ...

  2. 常用Lambda函数式接口

    常用Lambda函数式接口 1-概述 有且只有一个抽象方法,为Lambda准备的接口 都是由@FunctionalInterface进行的注解 2-函数式接口作为方法的参数 创建线程,用的最多且经典的 ...

  3. Java8新特性学习(lambda,函数式接口,stream,Optional)

    一. Lambda Lambda 是一个匿名函数,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递).可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风格,使Jav ...

  4. Java高级:新特性:lambda 函数式接口 方法引用 StreamAPI Optional类

    package com.atguigu.java1;import org.junit.Test;import java.util.Comparator;/*** Lambda表达式使用举例:** @a ...

  5. lambda函数式接口方法引用Sream

    Lambda表达式的使用 (o1, o2) -> Integer.compare(o1, o2); 格式: ->:lambda操作符或箭头操作符 ->左边:lambda形参列表(即接 ...

  6. 学习 Java 8 - 函数式接口 Lambda

    学习 Java 8 - 函数式接口 Java 8 引入了函数式接口的概念.函数式接口其实就是只包含一个抽象方法的普通 Java 接口.在没有引入函数式接口之前,我们通常使用内部类和匿名类来实现类似的功 ...

  7. java compare 返回值_关于Java你不知道的那些事之Java8新特性[Lambda表达式和函数式接口]...

    前言 为什么要用Lambda表达式? Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,将代码像数据一样传递,这样可以写出更简洁.更灵活的代码,作为一个更紧凑的代码风 ...

  8. Java8 之 lambda 表达式、方法引用、函数式接口、默认方式、静态方法

    今天我来聊聊 Java8 的一些新的特性,确实 Java8 的新特性的出现,给开发者带来了非常大的便利,可能刚刚开始的时候会有点不习惯的这种写法,但是,当你真正的熟悉了之后,你一定会爱上这些新的特性的 ...

  9. 学习笔记之-java8的新特性-函数式接口,lambda表达式,方法引用,Stream API,Optional类

    1.Lambda表达式 用匿名内部类的方法去创建多线程1.new Thread2.参数传递new Runnable3.重写run方法4.在run方法中去设置线程任务5.调用start问题:我们最终目标 ...

  10. Jdk1.8新特性(二)——lambda表达式(参数列表)-{}和函数式接口@FunctionalInterface

    Jdk1.8新增lambda表达式是为了简化代码,主要用于简化匿名实现类,为其提供一种更加简洁的写法.Lambda表达式在swift语言中被称为代码块,lambda表达式可以认为是一种特殊的接口,是匿 ...

最新文章

  1. 社区O2O的发展与未来
  2. Boost::context模块callcc的分段的测试程序
  3. 【MFC】具有提示功能的工具栏
  4. Ubuntu Linux系统环境变量配置文件
  5. Building a WAMP Dev Environment [3/4] - Installing and Configuring PHP
  6. 《Go语言程序设计》读书笔记 (九) 命令工具集
  7. 三星Galaxy S22全系售价曝光:标准版起步或超5000元
  8. 面试题45:圆圈中最后剩下的数字
  9. 以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明
  10. 用戶故事 vs 用例
  11. CDR案例:广告条幅banner设计
  12. sigmaplot画辐射方向图教程
  13. AngularJS 和 Electron 构建桌面应用
  14. swift4.0语法杂记(精简版)
  15. M1芯片MacBook通过Docker安装Kali
  16. android 小米闹钟,闹钟
  17. 中铁员工入职培训心得体会
  18. java期末大作业设计_java程序设计-期末大作业报告模板.doc
  19. 干货满满!财务报表之FineReport年初财务编制预算
  20. 电影推荐系统-整体总结(五)实时推荐

热门文章

  1. 互联网日报 | 前11月全国网购超10万亿元;B站8月月活首次突破2亿;华为Mate40标准版开启预售...
  2. 雷电模拟器Android obb,exagear模拟器数据obb包
  3. ElasticSearch安装中文分词器IK和拼音分词器
  4. 固态硬盘替换机械硬盘
  5. eigen向量计算_Eigen矩阵基本运算
  6. 【转】新方法打造自己的N合一 XP系统盘
  7. 移动端天气系统--【下雨】效果之【雷电】的实现和分析
  8. css在透明的背景下显示白色字体
  9. 带你了解IP地址的计算
  10. SQL Server索引 - 聚集索引、非聚集索引、非聚集唯一索引 第八篇