java8中的二进制操作者
BinaryOperator 是java8的java.util.function包中定义的一个接口。这个接口扩展了BiFunction接口。它可以被分配给Lamda表达式/方法引用,执行一个接受两个相同类型的参数并返回相同类型值的操作。在这篇文章中,我们将学习BinaryOperator接口以及它的方法用法和例子。
语法
@FunctionalInterface
public interface BinaryOperator extends BiFunction {
public static BinaryOperator minBy(Comparator comparator)
public static BinaryOperator maxBy(Comparator comparator)
}
这个接口中没有直接的抽象方法。BinaryOperator中定义了两个静态方法 - minBy, maxBy。BiFunction有一个抽象方法--R apply(T t, U u)。
兰姆达表达式示例
Lambda表达式只有两个参数 - (v1, v2),Lambda表达式被分配给BinaryOperator函数。
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));
}
}
静态minBy()方法示例
minBy()方法是定义在java.util.function.BinaryOperator类中的一个静态方法。 它返回二进制运算符,根据提供的比较器,返回给定值的低值。
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));
maxBy()方法示例
这是一个静态方法,它返回二进制运算符--根据所提供的比较器对给定的值进行最大化处理。
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));