Java8 BinaryOperator

package com.lgx.jdk8.part01;

import java.util.Comparator;
import java.util.function.BiFunction;
import java.util.function.BinaryOperator;

/**
 * BinaryOperator的講解
 */
public class Test13BinaryOperator {
    public static void main(String[] args) {
        Test13BinaryOperator test = new Test13BinaryOperator();
        Double result = test.biFunctionCompute(10.0, 15.0, (value1, value2) -> value1 + value2);
        System.out.println("result = [" + result + "]");

        Double result2 = test.binaryOperatorCompute(10.0, 15.0, (value1, value2) -> value1 + value2);
        System.out.println("result2 = [" + result2 + "]");

        Double minResult = test.binaryOperatorMinBy(100.0, 150.0, Double::compareTo);
        System.out.println("數字較小minResult = [" + minResult + "]");

        Double maxResult = test.binaryOperatorMaxBy(100.0, 150.0, Double::compareTo);
        System.out.println("數字較大maxResult = [" + maxResult + "]");

        String minResult2 = test.binaryOperatorMinBy2("hello", "hello world", (a, b) -> a.length() - b.length());
        System.out.println("長度較短minResult2 = [" + minResult2 + "]");
        String minResult3 = test.binaryOperatorMinBy2("hello", "hello world", String::compareTo);
        System.out.println("長度較短minResult3 = [" + minResult3 + "]");
        String minResult4 = test.binaryOperatorMinBy2("hello", "world123", (a, b) -> a.charAt(0) - b.charAt(0));
        System.out.println("首字母在前面的minResult4 = [" + minResult4 + "]");

        String maxResult2 = test.binaryOperatorMaxBy2("hello", "hello world", String::compareTo);
        System.out.println("長度較長maxResult2 = [" + maxResult2 + "]");
    }

    //BiFunction寫法
    public Double biFunctionCompute(Double para1, Double para2, BiFunction<Double, Double, Double> biFunction){
        return biFunction.apply(para1, para2);
    }

    //BinaryOperator寫法
    public Double binaryOperatorCompute(Double para1, Double para2, BinaryOperator<Double> binaryOperator){
        return binaryOperator.apply(para1, para2);
    }

    //獲取2個double中較小的那個
    public Double binaryOperatorMinBy(Double para1, Double para2, Comparator<Double> comparator){
        return BinaryOperator.minBy(comparator).apply(para1, para2);
    }

    //獲取2個double中較大的那個
    public Double binaryOperatorMaxBy(Double para1, Double para2, Comparator<Double> comparator){
        return BinaryOperator.maxBy(comparator).apply(para1, para2);
    }

    public String binaryOperatorMinBy2(String para1, String para2, Comparator<String> comparator){
        return BinaryOperator.minBy(comparator).apply(para1, para2);
    }

    public String binaryOperatorMaxBy2(String para1, String para2, Comparator<String> comparator){
        return BinaryOperator.maxBy(comparator).apply(para1, para2);
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章