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) { Listlist = 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