lambda表达式之函数式编程


package lambda.functionalProgramming;

import java.util.Arrays;
import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import java.util.function.BinaryOperator;
import java.util.function.Function;

public class FunctionProgrammingTest {
    public static void main(String[] args) {
        List list = Arrays.asList(0,1,2,3,4,5,6);
        biConsumer.accept(list,10);
        System.out.println("BiConsumerTest:");
        for (Integer i: list) {
            System.out.println(i);
        }

        System.out.println("BiFunctionTest:");
        List result = biFunction.apply(list, 100);
        System.out.println(result.toString());

        System.out.println("BiOperatorTest:");
        System.out.println(operator(1, 2, (num1, num2) -> num1 + num2));
        System.out.println(operator(1, 2, (num1, num2) -> num1 * num2));
        System.out.println(operator(1, 2, (num1, num2) -> num1 - num2));

        System.out.println("FunctionTest:");
        System.out.println(function.apply("hello word"));
    }

    /*
       代表了一个接受两个输入参数的操作,并且不返回任何结果
       通过accept方法传入参数
     */
    public static BiConsumer, Integer> biConsumer = (list,num)->{
        for(int i = 0; i < list.size(); i++){
            list.set(i, list.get(i) + num);
        }
    };


    /*
        代表了一个接受两个输入参数的方法,并且返回一个结果
        通过apply方法传入参数
     */
    public static BiFunction, Integer, List> biFunction = (list, num) -> {
        for (int i = 0; i < list.size(); i++) {
            list.set(i, list.get(i) + num);
        }
        return list;
    };


    /*
    代表了一个作用于于两个同类型操作符的操作,并且返回了操作符同类型的结果
    BinaryOperator继承于BiFunction,通过apply方法传递参数
     */
    public static Integer operator(int x, int y, BinaryOperator fun1){
        return fun1.apply(x,y);
    }

    /*
      接受一个输入参数,返回一个结果;
      通过apply方法传递参数
     */
    public static Function function = (x)->{
        return x.toUpperCase();
    };

}

测试结果:

BiConsumerTest:
10
11
12
13
14
15
16
BiFunctionTest:
[110, 111, 112, 113, 114, 115, 116]
BiOperatorTest:
3
2
-1
FunctionTest:
HELLO WORD