我是靠谱客的博主 紧张小猫咪,这篇文章主要介绍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表达式内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部