zoukankan      html  css  js  c++  java
  • Java8 四大核心函数式接口Function、Consumer、Supplier、Predicate

    1、Function<T, R> 

    T:入参类型,R:出参类型

    调用方法:R apply(T t); 

    定义函数示例:Function<Integer, Integer> func = p -> p * 10;    // 输出入参的10倍

    调用函数示例:func.apply(10);    // 结果100

        /**
         * Applies this function to the given argument.
         *
         * @param t the function argument
         * @return the function result
         */
        R apply(T t);

    2、Consumer<T>

    T:入参类型;没有出参

    调用方法:void accept(T t);

    定义函数示例:Consumer<String> consumer= p -> System.out.println(p);    // 因为没有出参,常用于打印、发送短信等消费动作

    调用函数示例:consumer.accept("18800008888");

    package com.hyc;
    import java.util.function.Consumer;
    public class Demo09Consumer {
        private static void consumeString(Consumer<String> function) {
            function.accept("Hello");
        }
    
        public static void main(String[] args) {
            consumeString(s -> System.out.println(s));
        }
    }

    3、Supplier<T>

    T:出参类型;没有入参

    调用方法:T get();

    定义函数示例:Supplier<Integer> supplier= () -> 100;    // 常用于业务“有条件运行”时,符合条件再调用获取结果的应用场景;运行结果须提前定义,但不运行。

    调用函数示例:supplier.get();

    package com.hyc;
    import java.util.function.Supplier;
    public class Demo08Supplier {
        private static String getString(Supplier<String> function) {
            return function.get();
        }
    
        public static void main(String[] args) {
            String msgA = "Hello";
            String msgB = "World";
            System.out.println(getString(() -> msgA + msgB));
        }
    }

    4、Predicate<T>

    T:入参类型;出参类型是Boolean

    调用方法:boolean test(T t);

    定义函数示例:Predicate<Integer> predicate = p -> p % 2 == 0;    // 判断是否、是不是偶数

    调用函数示例:predicate.test(100);    // 运行结果true

    package com.hyc;
    import java.util.function.Predicate;
    public class Demo15PredicateTest {
        private static void method(Predicate<String> predicate) {
            boolean veryLong = predicate.test("HelloWorld");
            System.out.println("字符串很长吗:" + veryLong);
        }
    
        public static void main(String[] args) {
            method(s -> s.length() > 5);
        }
    }
  • 相关阅读:
    Mapreduce 进阶
    Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io .nativeio.NativeIO$Windows.createDirectoryWithMode0(Ljava/lang/String;I)V
    hive INSERT OVERWRITE table could not be cleaned up.
    flume 多chanel配置
    java jar包与配置文件的写法
    CDH 修改配置注意事项
    Scala 闭包
    Error: Java heap space
    Spark Streaming 执行流程
    python统计字符串中每个单词出现的个数【一行】
  • 原文地址:https://www.cnblogs.com/winchance/p/13679017.html
Copyright © 2011-2022 走看看