
什么是java8中的二进制操作者?
BinaryOperator 是在java8的 java.util.function包中定义的一个接口。这个接口扩展了 BiFunction接口。它与Lamda expressions 或 method references 。它执行一个接受两个相同类型的参数并返回相同类型值的操作。
学习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表达式示例
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