Java8 UnaryOperator接口实例教程

133 阅读2分钟

Java8 functional interface example

什么是java中的UnaryOperator?

UnaryOperatorjava.util.function包中的一个功能接口。它对一个操作数进行操作并返回相同操作数类型的结果。

这些是用lambda表达式或方法或构造函数引用来分配的。

UnaryOperator java8例子

下面是一个UnaryOperator接口声明

@FunctionalInterface  
public interface UnaryOperator extends Function {    
    static  UnaryOperator identity() {  
        return t -> t;  
    }  
}  

UnaryOperator 扩展了 functional接口。它从Function 接口中扩展了抽象的applyFunction 接口有默认的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 接口中延伸出来的。

andThencompose 的区别是参数执行的顺序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中的原始单项运算符

有三个原始单项运算符,分别是IntegerLongDouble ,定义在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的例子。