我是靠谱客的博主 紧张小猫咪,最近开发中收集的这篇文章主要介绍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表达式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部