我是
靠谱客的博主
紧张小猫咪,这篇文章主要介绍
Groovy之lambda表达式,现在分享给大家,希望可以做个参考。
Lambda表达式表示匿名函数,和匿名类对比,即不需要申明式函数的方法名和返回值,用表达式的形式完成函数的参数和相关逻辑。
Lambda表达式应用于Groovy和Kotlin中,作为实现函数式编程的关键,(函数式编程是指一个函数能作为另一个函数的入参)。而Java8中支持对lambda表达式的应用。
groovy lambda使用
Java lambda 与 groovy lambda 对比
1.相关初始代码
Java
@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
@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表达式内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复