Java8函数式编程(一):Lambda表达式类型与常用函数接口
[TOC]
创新互联-专业网站定制、快速模板网站建设、高性价比阳西网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式阳西网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖阳西地区。费用合理售后完善,十年实体公司更值得信赖。
1 前言
最近在看一些开源项目的源码,函数式编程风格的代码无处不在,所以得要好好学一下了。
2 Lambda表达式类型
无参数:
Runnable noArguments = () -> System.out.println("Hello World!");
noArguments.run();
一个参数:
UnaryOperator oneArgument = x -> !x;
System.out.println(oneArgument.apply(true));
多行语句:
Runnable multiStatement = () -> {
System.out.print("Hello");
System.out.println(" World!");
};
两个参数:
BinaryOperator add = (x, y) -> x + y;
add.apply(1, 2);
显式类型:
BinaryOperator addExplicit = (Integer x, Integer y) -> x + y;
3 常用函数接口
每个函数接口列举一些例子来说明。
3.1 Predicate
判断一个数是否为偶数。
Predicate isEven = x -> x % 2 == 0;
System.out.println(isEven.test(3)); // false
3.2 Consumer
打印字符串。
Consumer printStr = s -> System.out.println("start#" + s + "#end");
printStr.accept("hello"); // start#hello#end
List list = new ArrayList(){{
add("hello");
add("world");
}};
list.forEach(printStr);
3.3 Function
将数字加1后转换为字符串。
Function addThenStr = num -> (++num).toString();
String res = addThenStr.apply(3);
System.out.println(res); // 4
3.4 Supplier
创建一个获取常用SimpleDateFormat的Lambda表达式。
Supplier normalDateFormat = () -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf = normalDateFormat.get();
Date date = sdf.parse("2019-03-29 23:24:05");
System.out.println(date); // Fri Mar 29 23:24:05 CST 2019
3.5 UnaryOperator
实现一元操作符求绝对值。
UnaryOperator abs = num -> -num;
System.out.println(abs.apply(-3)); // 3
3.6 BinaryOperator
实现二元操作符相加。
BinaryOperator multiply = (x, y) -> x * y;
System.out.println(multiply.apply(3, 4)); // 12
文章名称:Java8函数式编程(一):Lambda表达式类型与常用函数接口
本文URL:http://ybzwz.com/article/ghppij.html