美文网首页Java 8 新特性
Java 8 函数式接口(四) 其它函数式接口的样例

Java 8 函数式接口(四) 其它函数式接口的样例

作者: 爱恨_交加 | 来源:发表于2021-12-31 14:16 被阅读0次

说明

这里只探究稍微特殊点的两个函数式接口:UnaryOperatorBinaryOperator

UnaryOperator<T>

对类型为 T 参数应用操作,进行一元运算并返回 T 类型的结果

@FunctionalInterface
public interface UnaryOperator<T> extends Function<T, T> {

    /** a function that always returns its input argument */
    static <T> UnaryOperator<T> identity() {
        return t -> t;
    }
}

样例

探究 identity 方法

代码

public class TestDemo {
    /** 测试 */
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        Stream<LocalDateTime> stream = Stream.of(now, now.plusDays(1L), now.plusDays(2L));
        List<LocalDateTime> collect = stream.map(UnaryOperator.identity()).collect(Collectors.toList());
        collect.forEach(System.out::println);
    }
}

输出

2021-12-30T17:12:34.273
2021-12-31T17:12:34.273
2022-01-01T17:12:34.273

BinaryOperator<T>

对类型为 T 参数应用操作,进行二元运算并返回 T 类型的结果

@FunctionalInterface
public interface BinaryOperator<T> extends BiFunction<T,T,T> {

    public static <T> BinaryOperator<T> minBy(Comparator<? super T> comparator) {
        Objects.requireNonNull(comparator);
        return (a, b) -> comparator.compare(a, b) <= 0 ? a : b;
    }

    public static <T> BinaryOperator<T> maxBy(Comparator<? super T> comparator) {
        Objects.requireNonNull(comparator);
        return (a, b) -> comparator.compare(a, b) >= 0 ? a : b;
    }
}

样例

探究 maxByminBy 方法

代码

public class TestDemo {
    /** 测试 */
    public static void main(String[] args) {
        int[] arr1 = {9, 1, 7, 3, 5};
        Integer maxResult = arr1[0];
        Integer minResult = arr1[0];
        for(int i = 1; i < arr1.length; i ++){
            maxResult = getMaxInt(maxResult, arr1[i], Integer::compareTo);
            minResult = getMinInt(minResult, arr1[i], Integer::compareTo);
        }
        System.out.println("最大值: " + maxResult);
        System.out.println("最小值: " + minResult);
    }
    /** 定义操作方法:获取最大值 */
    public static int getMaxInt(int a, int b, Comparator<Integer> comparator){
        return BinaryOperator.maxBy(comparator).apply(a, b);
    }
    /** 定义操作方法:获取最小值 */
    public static int getMinInt(int a, int b, Comparator<Integer> comparator){
        return BinaryOperator.minBy(comparator).apply(a, b);
    }
}

输出

最大值: 9
最小值: 1

上一节:Java 8 函数式接口(三) 四大内置的核心函数式接口的样例

相关文章

  • Java 8 函数式接口(四) 其它函数式接口的样例

    说明 这里只探究稍微特殊点的两个函数式接口:UnaryOperator 和 BinaryOperator Unar...

  • Java 8 Function函数式接口

    Java 8 Function函数式接口 介绍 函数式接口其实就是一个抽象接口类,在Java 8之前已有的函数式接...

  • JAVA8函数式接口学习

    JAVA8函数式接口 函数式接口是java8的一种新特性,函数式接口定义了且只定义了一个抽象方法!该接口非常有用,...

  • Java8-函数式接口

    什么是函数式接口 ​ Java 8引入了函数式接口的概念 ​ 1). 只包含一个抽象方法的接口,称为函数式...

  • 函数式接口(二)

    前面的文章中说明了Java8中最基本的4种函数式接口,我们今天先介绍其它Cosumer函数式接口。 BiConsu...

  • Java lambda表达式

    1. Java函数式接口 Java实现函数式编程的方式是函数式接口(functional interface),函...

  • 12.函数式接口

    主要内容 自定义函数式接口 函数式编程 常用函数式接口 第一章 函数式接口 1.1 概念 函数式接口在Java中是...

  • Java 函数式接口

    Java 函数式接口 这个术语首先出自于 Java 8。Java 里的函数式接口 指的是一个接口只包含一个抽象方法...

  • java8函数式接口

    一、函数式接口 1、函数式接口在java中是指:有且仅有一个抽象方法的接口,函数式接口,即适用于函数式编程场景的接...

  • Java8 新特性 四大内置核心函数式接口及其扩展

    四大内置核心函数式接口 Java内置的函数式接口是为了方便开发者使用Lambda表达式,对于应对大部分函数式接口的...

网友评论

    本文标题:Java 8 函数式接口(四) 其它函数式接口的样例

    本文链接:https://www.haomeiwen.com/subject/efaiqrtx.html