因为编程习惯不想改变,很多语法上就没有用Lambda表达式,都是用传统的编码风格,但是最近读同事的代码发现,lambad这种函数式编程貌似用的很普遍了,所以写一篇博文来记录一下。
1、Lambda 表达式
这是java8中的一个重要新特性,推崇函数式编程,可以大大减少代码的书写量。可以将函数作为参数传递。
基本语法:
// 当代码语句只有1句时,可以省略大括号。并且如何需要返回时,会自动返回
(形参)->{ 代码语句 }
1.1 集合遍历
在传统方式上,我们要进行遍历的时候,都会用foreach循环。java8之前的写法
List<String> list = Arrays.asList("A","B","C","D");
for (String s : list) {
System.out.println(s);
}
但是有了lambda表达式之后 java8的写法
List<String> list = Arrays.asList("A","B","C","D");[添加链接描述](https://blog.csdn.net/weixin_43732955/article/details/95309570)
list.forEach(s-> System.out.println(s));
或者 在执行输出的时候 我们还能下面这个语法。双冒号的写法是不是很像函数的感觉。使用这种写法,连形参都能省略,
使用语法为
类名::方法名
list.forEach( System.out::println );
1.2 匿名内部类
关于什么是匿名类可以参照匿名内部类及分类,如我们在进行集合元素排序比较的时候,会需要实例化一个比较器Comparator
。代码如下
list.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
上面的写法 就是在java8 之前我们创建匿名内部类的方式,但是有了lambad表达式之后,代码就变的简单起来。
list.sort((o1,o2)->{return o1.compareTo(o2);});
// 因为我们上面语法规则中提到了 当只有一行代码的时候,大括号可以省略
list.sort((o1,o2)->o1.compareTo(o2));
构造比较器 还能使用Comparator.comparing() 这个方法
小结
本文就介绍了 lambda表达式的几种基本用法。java8新特性中,stream流进行数据处理这个功能也非常强大,然后再结合lambda使用,在处理逻辑集合数据会变得相当方便。