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

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

概述

新时代的程序员必须要要掌握的: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

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

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