day12【Lambda,函数式接口】Lamd
今日内容
- 函数式接口
- 函数式编程
- 常见函数式接口
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相关推荐
- Java 8 - 03 Lambda 函数式接口Predicate Consumer Function Supplier
文章目录 Pre Predicate 断言型函数式接口 Consumer 消费型函数式接口 Function 功能型函数式接口 Supplier 供给型函数式接口 小结 函数式接口如何处理异常信息 P ...
- 常用Lambda函数式接口
常用Lambda函数式接口 1-概述 有且只有一个抽象方法,为Lambda准备的接口 都是由@FunctionalInterface进行的注解 2-函数式接口作为方法的参数 创建线程,用的最多且经典的 ...
- Java8新特性学习(lambda,函数式接口,stream,Optional)
一. Lambda Lambda 是一个匿名函数,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递).可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风格,使Jav ...
- Java高级:新特性:lambda 函数式接口 方法引用 StreamAPI Optional类
package com.atguigu.java1;import org.junit.Test;import java.util.Comparator;/*** Lambda表达式使用举例:** @a ...
- lambda函数式接口方法引用Sream
Lambda表达式的使用 (o1, o2) -> Integer.compare(o1, o2); 格式: ->:lambda操作符或箭头操作符 ->左边:lambda形参列表(即接 ...
- 学习 Java 8 - 函数式接口 Lambda
学习 Java 8 - 函数式接口 Java 8 引入了函数式接口的概念.函数式接口其实就是只包含一个抽象方法的普通 Java 接口.在没有引入函数式接口之前,我们通常使用内部类和匿名类来实现类似的功 ...
- java compare 返回值_关于Java你不知道的那些事之Java8新特性[Lambda表达式和函数式接口]...
前言 为什么要用Lambda表达式? Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,将代码像数据一样传递,这样可以写出更简洁.更灵活的代码,作为一个更紧凑的代码风 ...
- Java8 之 lambda 表达式、方法引用、函数式接口、默认方式、静态方法
今天我来聊聊 Java8 的一些新的特性,确实 Java8 的新特性的出现,给开发者带来了非常大的便利,可能刚刚开始的时候会有点不习惯的这种写法,但是,当你真正的熟悉了之后,你一定会爱上这些新的特性的 ...
- 学习笔记之-java8的新特性-函数式接口,lambda表达式,方法引用,Stream API,Optional类
1.Lambda表达式 用匿名内部类的方法去创建多线程1.new Thread2.参数传递new Runnable3.重写run方法4.在run方法中去设置线程任务5.调用start问题:我们最终目标 ...
- Jdk1.8新特性(二)——lambda表达式(参数列表)-{}和函数式接口@FunctionalInterface
Jdk1.8新增lambda表达式是为了简化代码,主要用于简化匿名实现类,为其提供一种更加简洁的写法.Lambda表达式在swift语言中被称为代码块,lambda表达式可以认为是一种特殊的接口,是匿 ...
最新文章
- 社区O2O的发展与未来
- Boost::context模块callcc的分段的测试程序
- 【MFC】具有提示功能的工具栏
- Ubuntu Linux系统环境变量配置文件
- Building a WAMP Dev Environment [3/4] - Installing and Configuring PHP
- 《Go语言程序设计》读书笔记 (九) 命令工具集
- 三星Galaxy S22全系售价曝光:标准版起步或超5000元
- 面试题45:圆圈中最后剩下的数字
- 以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明
- 用戶故事 vs 用例
- CDR案例:广告条幅banner设计
- sigmaplot画辐射方向图教程
- AngularJS 和 Electron 构建桌面应用
- swift4.0语法杂记(精简版)
- M1芯片MacBook通过Docker安装Kali
- android 小米闹钟,闹钟
- 中铁员工入职培训心得体会
- java期末大作业设计_java程序设计-期末大作业报告模板.doc
- 干货满满!财务报表之FineReport年初财务编制预算
- 电影推荐系统-整体总结(五)实时推荐
热门文章
- 互联网日报 | 前11月全国网购超10万亿元;B站8月月活首次突破2亿;华为Mate40标准版开启预售...
- 雷电模拟器Android obb,exagear模拟器数据obb包
- ElasticSearch安装中文分词器IK和拼音分词器
- 固态硬盘替换机械硬盘
- eigen向量计算_Eigen矩阵基本运算
- 【转】新方法打造自己的N合一 XP系统盘
- 移动端天气系统--【下雨】效果之【雷电】的实现和分析
- css在透明的背景下显示白色字体
- 带你了解IP地址的计算
- SQL Server索引 - 聚集索引、非聚集索引、非聚集唯一索引 第八篇