Java8 - BinaryOperator接口示例|功能接口教程

186 阅读2分钟

Java8 functional interface example

什么是java8中的二进制操作者?

BinaryOperator 是在java8的 java.util.function包中定义的一个接口。这个接口扩展了 BiFunction接口。它与Lamda expressionsmethod references 。它执行一个接受两个相同类型的参数并返回相同类型值的操作。

学习BinaryOperator接口和它的方法用法和例子。

语法

@FunctionalInterface
public interface BinaryOperator extends BiFunction {
    public static  BinaryOperator minBy(Comparator comparator)
    public static  BinaryOperator maxBy(Comparator comparator)
}  

这里面没有直接的抽象方法。在BinaryOperator 中定义了两个静态方法--minBy,maxByBiFunction 有一个抽象方法--R apply(T t, U u)。

二元运算符Lambda表达式示例

Lambda表达式只有两个参数 - (v1, v2),Lambda表达式被分配给BinaryOperator 函数。

import java.util.function.BinaryOperator;

public class Main {
    public static void main(String[] args) {
        BinaryOperator sum = (v1, v2) -> v1 + v2;
        System.out.println(sum.apply(50, 70));
        BinaryOperator appendString = (str1, str2) -> str1 + str2;
        System.out.println(appendString.apply("Binary ", "Operator Example "));
    }
}

上述代码的输出是

120  
Binary Operator Example 

二元操作者方法引用示例

声明了一个静态方法,这个方法是用双冒号::操作符调用的。下面是一个方法引用使用的示例代码。

package org.cloudhadoop.functions;
import java.util.function.BinaryOperator;
public class MyBinaryOperatorExample {
    public static Integer sum(int m,int n) {
        return m+n;
    }
    public static void main(String[] args) {
        //  lambda expression Example  
        BinaryOperator sum=(v1, v2) ->sum(v1 , v2);
        System.out.println(sum.apply(50, 70));
        //  Method reference Example  
        BinaryOperator sum1= MyBinaryOperatorExample::sum;
        System.out.println(sum1.apply(25,35));
    }
}  

输出

120  
60  

BinaryOperator 静态minBy()方法示例

minBy() 方法是定义在 包的 类中的一个静态方法。它返回二进制运算符,根据提供的比较器返回给定值的低值。java.util.function BinaryOperator

import java.util.Comparator;
import java.util.function.BinaryOperator;

public class BinaryOperatorMinByExample {
    public static void main(String[] args) {
        BinaryOperator naturalOrderMin = BinaryOperator.minBy(
                Comparator.naturalOrder()); // Natural Order Comparator passed  
        BinaryOperator reverseOrderMin = BinaryOperator.minBy(
                Comparator.reverseOrder()); // Reverse Order Comparator passed  
        System.out.println(naturalOrderMin.apply(50, 45));
        System.out.println(reverseOrderMin.apply(50, 45));
    }
}

输出

45  
50  

二进制运算符maxBy()方法 例子

它是一个静态方法,返回BinaryOperator - 通过所提供的比较器对给定值进行最大化。

import java.util.Comparator;
import java.util.function.BinaryOperator;

public class BinaryOperatorMaxByExample {
    public static void main(String[] args) {
        BinaryOperator naturalOrderMax = BinaryOperator.maxBy(
                Comparator.naturalOrder());
        BinaryOperator reverseOrderMax = BinaryOperator.maxBy(
                Comparator.reverseOrder());
        System.out.println(naturalOrderMax.apply(50, 45));
        System.out.println(reverseOrderMax.apply(50, 45));
    }
}


输出

50  
45