首页 > 编程语言 >小新学Java18-【函数式接口】

小新学Java18-【函数式接口】

时间:2022-12-12 20:56:29浏览次数:57  
标签:Predicate Java18 接口 other 新学 accept test 方法

一、函数式接口

1.1概念

1.2格式

1.3@FunctionalInterface注解

@FunctionalInterface注解
作用:可以检测接口是否是一个函数式接口
是:编译成功
否:编译失败(接口中没有抽象方法或者抽象方法的个数多余1个)

1.4自定义函数式接口

二、函数式编程

2.1 Lambda的延迟执行

性能浪费的日志案例

体验Lambda的更优写法

证明Lambda的延迟

2.2使用Lambda作为参数和返回值

三、常用函数式接口

3.1 Supplier接口

java.util.function.Supplier<T>接口仅包含一个无参的方法:T get()。
用来获取一个泛型参数指定类型的对象数据。
Supplier<T>接口被称之为生产型接口,指定接口的泛型是什么类型,那么接口中的get方法就会生产什么类型的数据

3.2练习∶求数组元素最大值

3.3 Consumer接口

抽象方法: accept

java.util.function.Consumer<T>接口则正好与supplier接口相反,
    它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定。

Consumer接口中包含抽象方法void accept(T t),意为消费一个指定泛型的数据。

Consumer接口是一个消费型接口,泛型执行什么类型,就可以使用accept方法消费什么类型的数据
至于具体怎么消费(使用)需要自定义(输出,计算....)

默认方法: andThen

consumer接口的默认方法andThen
作用:需要两个consumer接口,可以把两个Consumer接口组合到一起,再对数据进行消费
例如:
consumer<String> con1
consumer<String> con2
string s = "hello";
con1.accept( s);
con2.accept(s);

连接两个consumer接口再进行消费
con1.andThen(con2).accept(s);谁写前边谁先消费

3.4练习:格式化打印信息

3.5 Predicate接口

抽象方法:test

java.util.function.Predicate<T>接口
  作用:对某种数据类型的数据进行判街,结果返回一个boolean值
  Predicate接口中包含一个抽象方法:
  boolean test(T t):用来对指定数据类型数据进行判断的方法
    结果:
      符合条件,返回true
      不符合条件,返回false
逻辑表达式:可以连接多个判断的条件
&&:与运算符,有false则false
||:或运算符,有true则true
!:非(取反)运算符,非真则假,非假则真
默认方法
Predicate接口中有一个方法and,表示并且关系,也可以用于连接两个判断条件
default Predicate<T> and(Predicate<? super T> other){
Object.requireNonNull(other);
return(t) ->this.test(t) && other.test(t);
}
方法内部的两个判断条件也是用&&连接起来的
Predicate接口中有一个方法or,表示或者关系,也可以用于连接两个判断条件
default Predicate<T> or(Predicate<? super T> other){
Object.requireNonNull(other);
return(t) ->this.test(t) || other.test(t);
}
方法内部的两个判断条件也是用||连接起来的
Predicate接口中有一个方法negate,也表示取反的意思
default predicate<T> negate() {
return (t) ->!test(t);
}

3.6 练习:集合信息筛选

3.7Function接口

抽象方法:apply

java.util.Function.Function<T,R>接口用来根据一个类型的数据得到另一个类型的数据,
前者称为前置条件,后者称为后置条件。

Function接口中最主要的抽象方法为:R apply(T t),根据类型T的参数获取类型R的结果。

使用的场景例如:将string类型转换为Integer类型。

默认方法andThen

Function接口中的默认方法andThen:用来进行组合操作

3.8自定义函数模型拼接

标签:Predicate,Java18,接口,other,新学,accept,test,方法
From: https://www.cnblogs.com/shuxin1125/p/16973620.html

相关文章

  • 瞧瞧别人家的API接口,那叫一个优雅
    前言在实际工作中,我们需要经常跟第三方平台打交道,可能会对接第三方平台API接口,或者提供API接口给第三方平台调用。那么问题来了,如果设计一个优雅的API接口,能够满足:安全性......
  • 基于DSP+ZYNQ平台Zynq7035/45 FPGA高速串行接口的千兆以太网UDP例程设计和使用说明
         Xines基于XilinxXC7Z035/45-2FFG676I自研平台XQ6657Z35-EVM的Zynq7035/45PL端高速串行接口,使用千兆以太网通讯方式来测试验证底板上的光口通信,实现以下以......
  • books一系列接口
    目录drf数据的增删改查模型类序列化类路由配置视图类drf数据的增删改查模型类fromdjango.dbimportmodelsclassBaseModel(models.Model):is_delete=models......
  • Postman+Newman+jenkins实现持续集成接口测试
    1.环境配置1.需要安装nodejs环境1.在CMD命令下执行:node-v和npm-v来查看是否安装了nodejs环境2.安装Newman软件包1. npminstall-g......
  • 自动生成接口文档
    目录1、安装依赖2、设置接口文档访问路径3、文档描述说明的定义位置restframework可以自动帮助生成接口文档接口文档以网页的方式呈现自动接口文档能生成的是继承自API......
  • Java中文件转字符串的一种实现方式 (环绕执行模式&行为参数化&函数式接口|Lambda表达
    文件转字符串方式 --- (环绕执行模式&行为参数化&函数式接口|Lambda表达式)嗯,当然论方便的话,我们直接可以使用,org.apache.commons.io.FileUtils;StringreadFileToStrin......
  • 原来count(*)是接口性能差的真凶!
    最近我在公司优化过几个慢查询接口的性能,总结了一些心得体会拿出来跟大家一起分享一下,希望对你会有所帮助。我们使用的数据库是Mysql8,使用的存储引擎是Innodb。这次优化除......
  • 能读懂硬件原理图,熟悉常见的硬件接口。
    能读懂硬件原理图,熟悉常见的硬件接口。能读懂硬件原理图,熟悉常见的硬件接口。能读懂硬件原理图,熟悉常见的硬件接口。能读懂硬件原理图,熟悉常见的硬件接口。能读懂硬件原......
  • 集合接口【Collection】之ArrayList
    packagecom.Lucky;importjava.awt.*;importjava.util.LinkedList;importjava.util.List;/*ArrayList:1.底层使用顺序存储结构,可以使用角......
  • Map接口
    Map接口/*一、Map实现类的结构:  |----Map:双列数据:存储key-value的数据---类似于高中的函数:y=f(x)    |----HashMap:作为Map的主要实现类;线程不安全......