Java常用函数式接口总结


Posted in Java/Android onJune 29, 2021

四大函数式接口

新时代的程序员:lambda 表达式,链式编程,函数式接口,Stream 流式计算

函数式接口: 只有一个方法的接口

@FunctionalInterface
public interface Runnable {

    public abstract void run();
}
//超级多FunctionalInterface
//简化编程模型,在新版本的框架底层大量应用!
//foreach(消费者类型的函数式接口)

Java常用函数式接口总结

代码测试:

Java常用函数式接口总结

Function 函数式接口

package com.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 o) {
//                return o;
//            }
//        };
        //System.out.println(function .apply("asd"));
    Function<String,String> function= (str)->{return str;};
    System.out.println(function.apply("asd"));
    }
}

输出结果:asd

断定型接口:有一个输入参数,返回值只能是布尔值!

Java常用函数式接口总结

package com.function;


import java.util.function.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("asd"));

    }
}

输出结果:false

Consumer 消费型接口

Java常用函数式接口总结

package com.function;

import java.util.function.Consumer;

/**
 * Consumer 消费型接口: 只有输入,没有返回值
 */
public class Demo03 {


    public static void main(String[] args) {
//        Consumer<String> consumer = new Consumer<String>() {
//            @Override
//            public void accept(String str) {
//                System.out.println(str);
//            }
//        };
        //函数式接口
        Consumer<String> consumer = (str)->{
            System.out.println(str);
        };
        consumer.accept("ssssssssssssssss");

    }
}

输出结果:sssssssssssss

list.foreach 其实也是用的Consumer,自己写的例子:

//有入参没有返回值
        list.forEach(x->{
            System.out.println(x);
        });

有入参,没有返回值!

Supplier 供给型接口

Java常用函数式接口总结

package com.function;

import java.util.function.Supplier;

/**
 * Supplier 供给型接口,没有参数,只有返回值
 */
public class Demo04 {


    public static void main(String[] args) {
//        Supplier<String> supplier = new Supplier<String>() {
//            @Override
//            public String get() {
//                System.out.println("Get");
//                return "1024";
//            }
//        };
        Supplier<String> supplier = () ->{
          return "1024";
        };
        System.out.println(supplier.get());
    }
}

输出结果:1024

总结

函数型接口 :有入参,又返回值断定型接口: 有入参,返回布尔值消费型接口: 有入参,没有返回值供给型接口: 无入参,有返回值

到此这篇关于Java常用函数式接口总结的文章就介绍到这了,更多相关Java函数式接口内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Java/Android 相关文章推荐
深入理解java.lang.String类的不可变性
Jun 27 Java/Android
Java 数组内置函数toArray详解
Jun 28 Java/Android
Spring Boot 实现敏感词及特殊字符过滤处理
Jun 29 Java/Android
Java基础之线程锁相关知识总结
Jun 30 Java/Android
详解Android中的TimePickerView(时间选择器)的用法
Apr 30 Java/Android
Android中的Launch Mode详情
Jun 05 Java/Android
Android开发手册自定义Switch开关按钮控件
Jun 10 Java/Android
SpringCloud超详细讲解Feign声明式服务调用
Jun 21 Java/Android
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
Jun 21 Java/Android
Android基础入门之dataBinding的简单使用教程
Jun 21 Java/Android
阿里面试Nacos配置中心交互模型是push还是pull原理解析
Jul 23 Java/Android
Android移动应用开发指南之六种布局详解
Sep 23 Java/Android
分析并发编程之LongAdder原理
SpringBoot整合JWT的入门指南
jackson json序列化实现首字母大写,第二个字母需小写
Java数组与堆栈相关知识总结
分析JVM源码之Thread.interrupt系统级别线程打断
Jun 29 #Java/Android
Jackson 反序列化时实现大小写不敏感设置
Jun 29 #Java/Android
Maven学习----Maven安装与环境变量配置教程
You might like
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
javascript concat数组累加 示例
2009/09/03 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
在jQuery中 常用的选择器介绍
2013/04/16 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
JavaScript实现的类字典插入或更新方法实例
2015/07/10 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
微信小程序 前端源码逻辑和工作流详解
2016/10/08 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
2016/12/18 Javascript
JS仿Base.js实现的继承示例
2017/04/07 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
Python实现识别手写数字大纲
2018/01/29 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
Python中的类与类型示例详解
2019/07/10 Python
python模拟键盘输入 切换键盘布局过程解析
2019/08/15 Python
简单介绍django提供的加密算法
2019/12/18 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
HTML5 与 XHTML2
2008/10/17 HTML / CSS
应届生服装设计自我评价
2013/09/20 职场文书
防沙治沙典型材料
2014/05/07 职场文书
知识竞赛拉拉队口号
2014/06/16 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书
公司租房协议书范本
2014/10/08 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
涨价通知怎么写
2015/04/23 职场文书
小学课改工作总结
2015/08/13 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫
vue elementUI批量上传文件
2022/04/26 Vue.js