Java JUC并发之四大函数式接口 Functional Interface
时间:2021-07-15
本文章向大家介绍Java JUC并发之四大函数式接口 Functional Interface,主要包括Java JUC并发之四大函数式接口 Functional Interface使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
十二、四大函数式接口(必须掌握)
程序员必备技能:
- lambda表达式
- 链式编程
- 函数式接口 (有且只有一个方法)
- Stream流式计算
函数式接口 Functional Interface : 只有一个方法的接口
@FunctionalInterface
public interface Runnable {
/**
* When an object implementing interface {@code Runnable} is used
* to create a thread, starting the thread causes the object's
* {@code run} method to be called in that separately executing
* thread.
* <p>
* The general contract of the method {@code run} is that it may
* take any action whatsoever.
*
* @see java.lang.Thread#run()
*/
public abstract void run(); // 只有一个方法
}
// 存在超级多函数式接口
// 简化编程模型,在新版本的框架底层大量应用
// foreach(消费者类型的函数式接口)
// foreach(消费者类型的函数式接口)
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
@FunctionalInterface
public interface Consumer<T> {
/**
* Performs this operation on the given argument.
*
* @param t the input argument
*/
void accept(T t);
四大函数式接口
-
Function 函数型接口
@FunctionalInterface public interface Function<T, R> { // 传入参数T ,返回参数R /** * Applies this function to the given argument. * * @param t the function argument * @return the function result */ R apply(T t); //======================================================== package com.liu.function; import java.util.function.Function; /** * Function 函数型接口 一个输入参数 一个输出参数 * * 只要是函数式接口,就可以用lambda表达式简化 */ public class Demo01 { public static void main(String[] args) { // 工具类 输出输入的值 /* Function function = new Function<String,String>() { @Override public String apply(String str) { return str; } };*/ Function<String,String> function = (str)->{ return str; }; System.out.println(function.apply("ybb")); } }
-
Predicate 断定型接口
package com.liu.function; import java.util.function.Predicate; /** * Predicate 断定型接口 有一个输入参数 返回值只能为布尔值 */ public class Demo02 { public static void main(String[] args) { /* // 判断字符串是否为空 Predicate<String> predicate = new Predicate<String>() { @Override public boolean test(String str) { return str.isEmpty(); } };*/ // 判断字符串是否为空 Predicate<String> predicate = (str)-> { return str.isEmpty(); }; System.out.println(predicate.test("")); } }
-
Consumer 消费型接口 只有输入,没有返回值
package com.liu.function; import java.util.function.Consumer; /** * Consumer 消费型接口 只有输入,没有返回值 */ public class Demo03 { public static void main(String[] args) { /* Consumer<String> consumer = new Consumer<>() { @Override public void accept(String str) { System.out.println(str); } };*/ Consumer<String> consumer = (str)-> { System.out.println(str); }; consumer.accept("ybb"); } }
-
Supplier 供给型接口
package com.liu.function; import java.util.function.Supplier; /** * Supplier 供给型接口 没有输入参数,有返回值 */ public class Demo04 { public static void main(String[] args) { /* Supplier supplier = new Supplier<String>() { @Override public String get() { System.out.println("get()"); return "ybb"; } }; System.out.println(supplier.get());*/ Supplier supplier = () -> { System.out.println("get()"); return "ybb"; }; System.out.println(supplier.get()); } }
本文来自博客园,作者:{夕立君},转载请注明原文链接:https://www.cnblogs.com/liuzhhhao/p/15016624.html
原文地址:https://www.cnblogs.com/liuzhhhao/p/15016624.html
- 【深入研究】使用RNN预测股票价格系列一
- 【深入研究】使用RNN预测股票价格系列二
- 教你用一行Python代码实现并行(附代码)
- 在美国国会图书馆标题表的SKOS上运行Apache Spark GraphX算法
- 【精选】破解波动性突破实盘系统
- 从程序员的角度看神经网络的激活功能
- 在线矩阵微积分工具,可以生成 Python/Latex 代码哦!
- 机器学习应用区块链系列(一)——如何开发一套自己的智能合约系统
- 使用Botkit和Rasa NLU构建智能聊天机器人
- 【量化投资】缠论面面观(附Python源码)
- 独家 | 教你用Q学习算法训练神经网络玩游戏(附源码)
- 使用重采样评估Python中机器学习算法的性能
- Autofac正式发布2.1版
- DataDirectory是什么?
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- MySQL数据库——事务的操作(开启、回滚、提交)、特征、隔离级别基础总结
- MySQL数据库——数据库的设计(多表之间的关系与三大范式)与备份还原
- JavaWeb——JSP入门学习(JSP基本概念、JSP脚本、JSP内置对象)
- MySQL数据库——数据库CRUD之基本DML增删改表操作及DQL查表操作
- JavaWeb——AJAX异步技术实现方式与案例实战(原生的JS方式、使用JQuery方式)
- JavaWeb——一文带你入门Servlet(生命周期、注解配置方法、IDEA与tomcat的相关配置)
- JavaWeb——JQuery之基础案例实战(实现表格隔行换色、实现全选全不选、QQ表情选择、下拉列表选中条目左右选择功能)
- JavaWeb——JQuery之DOM操作应用及实践案例总结(DOM内容操作、DOM属性操作、CRUD操作)
- JavaWeb——Filter过滤器快速入门与是否登录验证&过滤敏感词汇案例实战(Filter配置方式、执行流程、生命周期方法、过滤器链)
- JavaWeb——会话技术之Session快速入门与验证码登录案例实战(Session实现原理、使用细节、快速入门、Session的特点)
- Nginx配置文件服务器
- JavaWeb——会话技术之Cookie快速入门与案例实战(详细讲解了Cookie实现原理、Cookie使用细节、Cookie的特点及作用)
- docker安装kibana
- JavaWeb——ServletContext对象的使用及文件下载案例实战
- (最新 9000 字 )Spring Boot 配置特性解析