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

379 阅读1分钟

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));