JUC并发编程学习(十一)四大函数式接口(必备)

四大函数式接口(必备)

程序员:泛型、反射、注解、枚举

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

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

java 复制代码
@FunctionalInterface
public interface Runnable {
    public abstract void run();
}

//@FunctionalInterface 函数式接口,超级多
//简化编程模型,在新版本的框架中大量应用!
//foreach(消费者类的函数式接口)

四大函数式接口:Consumer、Function、Predicate、Supplier

Function

  • Function 函数式接口 R apply(T t); 输入一个T类型的参数,返回一个R类型的值
  • 只要是函数式接口都可以用lambda表达式简化

简化前:

java 复制代码
Function ft = new Function<String,String>() {
    @Override
    public String apply(String str) {
        return str;
    }
};

简化后:

java 复制代码
Function ft = (str)->{return str;};

更加简化后:

java 复制代码
Function ft = str->{return str;};

Predicate

  • Predicate 断定型接口 有一个输入参数,返回类型只能是boolean值

  • 同样是一个函数式接口,可以简化

    简化前:

    java 复制代码
    Predicate<String> pr = new Predicate<String>() {
        @Override
        public boolean test(String str) {
            return str.isEmpty();
        }
    };

    简化后:

    java 复制代码
    Predicate<String> pr = str ->{return str.isEmpty();};

Comsumer

  • Comsumer 消费者接口 有一个输入参数,没有返回值
  • 同样可以简化

简化前:

java 复制代码
Consumer<String> stringConsumer = new Consumer<>() {
    @Override
    public void accept(String s) {
        System.out.println(s);
    }
};

简化后:

java 复制代码
Consumer<String> stringConsumer = str ->{
    System.out.println(str);
};

Supplier

  • Supplier 供给者接口 没有参数只有一个返回值
  • 同样可以简化

简化前:

java 复制代码
Supplier<String> stringSupplier = new Supplier<>() {
    @Override
    public String get() {
        return "我的世界";
    }
};

简化后:

java 复制代码
Supplier<String> stringSupplier = ()->{return "我的世界";};
相关推荐
笃励18 分钟前
Java面试题二
java·开发语言·python
易雪寒36 分钟前
IDEA在git提交时添加忽略文件
java·git·intellij-idea
打码人的日常分享1 小时前
企业人力资源管理,人事档案管理,绩效考核,五险一金,招聘培训,薪酬管理一体化管理系统(源码)
java·数据库·python·需求分析·规格说明书
27669582921 小时前
京东e卡滑块 分析
java·javascript·python·node.js·go·滑块·京东
爱写代码的刚子1 小时前
C++知识总结
java·开发语言·c++
冷琴19961 小时前
基于java+springboot的酒店预定网站、酒店客房管理系统
java·开发语言·spring boot
daiyang123...2 小时前
IT 行业的就业情况
java
爬山算法2 小时前
Maven(6)如何使用Maven进行项目构建?
java·maven
.生产的驴2 小时前
Electron Vue框架环境搭建 Vue3环境搭建
java·前端·vue.js·spring boot·后端·electron·ecmascript
爱学的小涛2 小时前
【NIO基础】基于 NIO 中的组件实现对文件的操作(文件编程),FileChannel 详解
java·开发语言·笔记·后端·nio