四大函数式接口 - 重点必须掌握(Juc-07)

本贴最后更新于 1603 天前,其中的信息可能已经沧海桑田

概述

新时代的程序员必须要要掌握的:lambda 表达式、链式编程、函数式接口、Stream 流式计算

Function 函数式接口

package net.yscxy.function; import java.util.function.Function; /** * @Author WangFuKun * @create 2020/11/23 14:53 */ /* *Function 函数式接口,有一个输入参数,有一个输出 * 只要是函数式接口都可以用Lambda表达式简化 * */ public class Demo01 { public static void main(String[] args) { Function<String, String> function = new Function<String, String>() { @Override public String apply(String s) { return s; } }; //Lambda表达式简化 Function<String, String> function1 = (str) -> { return str; }; System.out.println(function1.apply("abc")); } }

也可以更简单这样写

Function<String, String> function1 = str -> { return str; };

Predicate

有一个参数返回值只能是布尔值

package net.yscxy.function; import java.util.function.Predicate; /** * @Author WangFuKun * @create 2020/11/23 15:02 */ /* * 断定式接口,也就是有一个输入参数,返回值只能是布尔值 * */ public class Demo02 { public static void main(String[] args) { // Predicate<String> predicate = new Predicate<String>() { // @Override // public boolean test(String str) { // return str.isEmpty(); // } // }; // System.out.println(predicate.test("d")); Predicate<String> predicate = str -> { return str.isEmpty(); }; } }

Consumer 消费型接口

消费型接口,只有输入,没有返回值

package net.yscxy.function; import java.util.function.Consumer; /** * @Author WangFuKun * @create 2020/11/23 15:14 */ /* * 消费型接口,只有输入,没有返回值 * */ 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.accept("strssssssss"); Consumer<String> consumer = str->{ System.out.println(str); }; consumer.accept("test"); } }

Supplier 供给型接口

供给型接口,没有参数,只有返回值

package net.yscxy.function; import java.util.function.Supplier; /** * @Author WangFuKun * @create 2020/11/23 15:21 */ /* * 供给类型接口,没有参数,只有返回值 * */ public class Demo04 { public static void main(String[] args) { // Supplier<String> stringSupplier = new Supplier<String>() { // @Override // public String get() { // return "abs"; // } // }; // System.out.println(stringSupplier.get()); Supplier<String> stringSupplier = () -> { return "abs"; }; System.out.println(stringSupplier.get()); } }
  • JUC
    17 引用 • 3 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • nobt

    这关勾有 say 什么事

    1 回复
  • yscxy
    作者

    只是我的笔记而已

  • wizardforcel via Android

    java 的函数式接口设计垃圾死了

    看看 rxjava 的泛型接口,里面有 Func1 到 8,Action1 到 8