Java8函数式编程(一):Lambda表达式类型与常用函数接口-创新互联

[TOC]

为海港等地区用户提供了全套网页设计制作服务,及海港网站建设行业解决方案。主营业务为成都网站制作、成都做网站、外贸营销网站建设、海港网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

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 常用函数接口

Java8函数式编程(一):Lambda表达式类型与常用函数接口

每个函数接口列举一些例子来说明。

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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站标题:Java8函数式编程(一):Lambda表达式类型与常用函数接口-创新互联
标题来源:http://scyanting.com/article/ppogg.html