Java8之Function、BiFunction使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java8之Function、BiFunction使⽤BiFunction<T,U,R> 接收 2个参数,返回⼀个结果
public class DemoFunction {
public static void main(String[] args) {
DemoFunction t1 = new DemoFunction();
// Function函数的使⽤
Integer addResult = pute(3, value -> value + value);
System.out.println("加法结果:" + addResult); //3+3
Integer subResult = pute(3, value -> value - 1);
System.out.println("减法结果:" + subResult); //3-1
Integer multipResult = pute(3, value -> value * value);
System.out.println("乘法结果:" + multipResult); //3*3
Integer divisionResult = pute(6, value -> value / 3);
System.out.println("除法结果:" + divisionResult); //6/3
// 使⽤compose场景, 从右向左处理, 这⾥就是 (6 * 6) + 10 = 46
Integer composeResult = puteForCompose(6,
value -> value + 10,
value -> value * value);
System.out.println("Function compose 结果:" + composeResult);
// 使⽤andThen场景, 从左向右处理, 这⾥就是(3 + 20) - 10 = 13
Integer andThenResult = puteForAndThen(3,
value -> value + 20,
value -> value - 10);
System.out.println("Function andThen 结果:" + andThenResult);
// 使⽤ BiFunctioin场景, 这⾥是 2 + 3 = 5
Integer biFuncResult = puteForBiFunction(2, 3,
(v1, v2) -> v1 + v2);
System.out.println("BiFunction 结果:" + biFuncResult);
// 使⽤ BiFunctioin andThen场景, 这⾥是 (2 * 3) + 6 = 12
Integer biFuncAndThenResult = puteForBiFunctionAndThen(2, 3,
(v1, v2) -> v1 * v2, v1 -> v1 + 6);
System.out.println("BiFunction andThen 结果:" + biFuncAndThenResult);
}
/**
* 使⽤JDK8 Function函数
*
* @param num ⼊参
* @param function 函数
* @return Integer
*/
private Integer compute(Integer num, Function<Integer, Integer> function) {
return function.apply(num);
}
/**
* 使⽤compose函数,简单的说,就是从右向左处理。

*
* @param num 变量
* @param function1 函数1
* @param function2 函数2
* @return Integer
*/
private Integer computeForCompose(Integer num,
Function<Integer, Integer> function1,
Function<Integer, Integer> function2) {
return pose(function2).apply(num);
}
/**
* 使⽤andThen函数,简单的说,就是从左向右处理。

*
* @param num 变量
* @param function1 函数1
* @param function2 函数2
* @return Integer
*/
private Integer computeForAndThen(Integer num,
Function<Integer, Integer> function1,
Function<Integer, Integer> function2) {
return function1.andThen(function2).apply(num);
}
/**
* 使⽤BiFunction
*
* @param num1 变量1
* @param num2 变量2
* @param biFunction 函数
* @return Integer
*/
private Integer computeForBiFunction(Integer num1, Integer num2,
BiFunction<Integer, Integer, Integer> biFunction) { return biFunction.apply(num1, num2);
}
/**
* 使⽤BiFunction andThen⽅法
*/
private Integer computeForBiFunctionAndThen(Integer num1, Integer num2,
BiFunction<Integer, Integer, Integer> biFunction, Function<Integer, Integer> function) { return biFunction.andThen(function).apply(num1, num2);
}
}
输出结果。

相关文档
最新文档