我是
靠谱客的博主
紧张小猫咪,这篇文章主要介绍
Groovy之lambda表达式,现在分享给大家,希望可以做个参考。
Lambda表达式表示匿名函数,和匿名类对比,即不需要申明式函数的方法名和返回值,用表达式的形式完成函数的参数和相关逻辑。
Lambda表达式应用于Groovy和Kotlin中,作为实现函数式编程的关键,(函数式编程是指一个函数能作为另一个函数的入参)。而Java8中支持对lambda表达式的应用。
groovy lambda使用
复制代码1
Java lambda 与 groovy lambda 对比
1.相关初始代码
Java
复制代码1
2
3
4
5
6
7
8
9
10
11
12
13
@Getter
@Setter
@ToString
class Studet{
private Integer id;
private String name;
}
//初始化一个List
List<Student> students = Arrays.asList(
new Student(1,"zhangsan"),
new Student(2,"lisi"),
new Student(3,"wangwu"),
new Student(4,"zhaoliu"));
Groovy
复制代码1
2
3
4
5
6
7
8
9
10
11
12
@ToString
class Student{
Long id
String name
//初始化一个list
List<Student> students = [
new Student(id : 1, name : "zhangsan"),
new Student(id : 2, name : "lisi"),
new Student(id : 3, name : "wangwu"),
new Student(id : 4, name : "zhaoliu")
]
}
2.查找指定元素
Java
Optional<Student> result = students.stream().filter(student -> student.getName.indexOf( "zhangsan" ) >= 0 ).findFirst(); String message = result.isPresent() ? result.get().toString() : "not found" ; System.out.println(message); |
Groovy
println students. find {it.name.indexOf( "zhangsan" ) >= 0 } |
3.查找特定记录
Java
List<Student> result = students.stream().filter(student -> student.getId() >= 2 ).collect(Collectors.toList()); result.forEach(System.out::println); |
Groovy
println students. findAll {it.id >= 2 } |
4.从对象类型映射到另一个
Java
List<String> names = students.stream().map(student -> student.getName()).collect(Collectors.toList()); names.forEach(System.out::println); |
Groovy
println students. collect {it.name} |
5.执行减少量计算
Java
Optional<Integer> maxIdOptional = students.stream().map(Student::getId).reduce(Integer::max); String maxId = maxIdOptional.isPresent() ? maxIdOptional.get().toString() : "no max" ; System.out.println( "max id: " + maxId); |
Groovy
def here = students. inject ( null ){ max , it -> it.id > max ?.id ? it : max } |
最后
以上就是紧张小猫咪最近收集整理的关于Groovy之lambda表达式的全部内容,更多相关Groovy之lambda表达式内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复