
什么是java中的UnaryOperator?
UnaryOperator 是 java.util.function包中的一个功能接口。它对一个操作数进行操作并返回相同操作数类型的结果。
这些是用lambda表达式或方法或构造函数引用来分配的。
UnaryOperator java8例子
下面是一个UnaryOperator接口声明
@FunctionalInterface
public interface UnaryOperator extends Function {
static UnaryOperator identity() {
return t -> t;
}
}
UnaryOperator 扩展了 functional接口。它从Function 接口中扩展了抽象的apply 。Function 接口有默认的andThen() 、
compose
方法
java8使用lambda表达式的UnaryOperator例子
这是一个使用UnaryOperator 与lambda表达式的用法的例子。
import java.util.function.UnaryOperator;
public class Test {
public static void main(String[] args) throws Exception{
UnaryOperator unaryOperator = value -> value* value;
System.out.println(unaryOperator.apply(6));
System.out.println(unaryOperator.apply(6));
}
}
输出
49
16
它有静态的identity 方法
静态身份方法
它只有一个静态方法,用来返回输入值。下面是这个方法的一个使用例子
import java.util.function.UnaryOperator;
public class IdentityUnaryOperatorExample {
public static void main(String[] args) throws Exception{
UnaryOperator IdentityUnaryOperator = UnaryOperator.identity();
System.out.println(IdentityUnaryOperator.apply(25));
}
}
输出
25
默认方法,然后组成
这个方法是从Function 接口中延伸出来的。
andThen 和compose 的区别是参数执行的顺序andThen - 先执行被调用的函数,最后执行参数compose - 先执行参数,最后执行被调用的函数。
import java.util.function.UnaryOperator;
public class Test {
public static void main(String[] args) throws Exception{
UnaryOperator UnaryOperator1 = value -> value * value;
UnaryOperator UnaryOperator2 = value -> value * 10;
System.out.println(UnaryOperator1.andThen(UnaryOperator2).apply(3));
System.out.println(UnaryOperator1.compose(UnaryOperator2).apply(3));
}
}
上述代码执行的输出结果是
90
900
java8单数运算符方法参考示例
这是一个使用方法引用的功能接口的例子
import java.util.function.UnaryOperator;
public class Test {
public static void main(String[] args) throws Exception{
UnaryOperator methodRef = String::toLowerCase;
System.out.println(methodRef.apply("CLOUDHADOOP"));
}
}
输出
cloudhadoop
java8中的原始单项运算符
有三个原始单项运算符,分别是Integer 、Long 和Double ,定义在java.util.function 包中。
所有这些都只包含一个抽象的方法。所有这些运算符都接受输入数字值,并输出相同的输出类型的值。
这些可以用lambda表达式分配,作为参数传递,方法引用。
所有这些都将作为一个参数使用。
java8中的IntUnaryOperator接口示例
它只有一个抽象的方法 -applyAsInt 。它是一个功能接口,接收一个整数值,只产生整数。
import java.util.function.IntUnaryOperator;
public class IntUnaryOperatorExample {
public static void main(String[] args) throws Exception{
IntUnaryOperator IncrementInteger = (value) -> value +1;
System.out.println(IncrementInteger.applyAsInt(9));
}
}
上述代码的输出是
10
java8的LongUnaryOperator接口示例
它是一个功能接口,接受较长的输入,只输出长值。唯一的抽象方法是applyAsLong 。
import java.util.function.LongUnaryOperator;
public class LongUnaryOperatorExample {
public static void main(String[] args) throws Exception{
LongUnaryOperator decrementLong = (value) -> value + 1;
System.out.println(decrementLong.applyAsLong(998756));
}
}
输出
10.0
50.4
java8 DoubleUnaryOperator接口示例
DoubleUnaryOperator 取双倍值,只输出双倍值。它只有一个抽象方法 - double (double operand);默认方法 - , 方法。applyAsDouble andThen compose
import java.util.function.DoubleUnaryOperator;
public class DoubleUnaryOperatorExample {
public static void main(String[] args) throws Exception{
DoubleUnaryOperator doubleUnaryOperatorExample = (value) -> value+value;
System.out.println(doubleUnaryOperatorExample.applyAsDouble(5));
System.out.println(doubleUnaryOperatorExample.applyAsDouble(25.2));
}
}
输出
10.0
50.4
总结
在本教程中,学习了原始的UnaryOperator和使用lambda表达式和方法引用的例子。
它还包括LongUnaryOperator、DoubleUnaryOperator、IntUnaryOperator的例子。