栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java使用Lamdba找出集合对象中最小值

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java使用Lamdba找出集合对象中最小值

一、问题

有如下四个人,如何使用Lamdba找到年龄最小的并打印出来

@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
public class Person {
    private String name;
    private  Integer age;
}

 

  List persons = Stream.of(new Person("老王", 35)
                , new Person("老张", 23)
                , new Person("老周", 56)
                , new Person("老李", 48))
                .collect(Collectors.toList());

 二、使用sorted+limit
       persons.stream()
                .sorted((p1, p2) -> p2.getAge() - p1.getAge())
                .limit(1).forEach((person) -> {
            System.out.println("sorted+limit:" + JSON.toJSONString(person));
            //   sorted+limit:{"age":56,"name":"老周"}
        });
三、使用 sorted+skip(不推荐)
     persons.stream()
                .sorted((p1, p2) -> p1.getAge() - p2.getAge())
                .skip(persons.size() - 1).forEach((person) -> {
            System.out.println("sorted+skip:" + JSON.toJSONString(person));
            //      sorted+skip:{"age":56,"name":"老周"}
        });
 四、使用max
        Optional max = persons.stream()
                .max((p1, p2) -> p1.getAge() - p2.getAge());
        max.ifPresent((person -> {
            System.out.println("max:" + JSON.toJSONString(person));
            //   max:{"age":56,"name":"老周"}
        }));
五、使用min(不推荐)
   Optional min = persons.stream()
                .min((p1, p2) -> p2.getAge() - p1.getAge());
        min.ifPresent((person -> {
            System.out.println("min:" + JSON.toJSONString(person));
            //    min:{"age":56,"name":"老周"}
        }));
六、使用reduce(推荐)
    Optional cacl2 = persons.stream()
                .reduce((p1, p2) -> p1.getAge() > p2.getAge() ? p1 : p2);
        cacl2.ifPresent(person -> {
            System.out.println("reduce" + JSON.toJSONString(person));
            //   reduce{"age":56,"name":"老周"}
        });
七、完整代码及结果
 private static void test01() {
        List persons = Stream.of(new Person("老王", 35)
                , new Person("老张", 23)
                , new Person("老周", 56)
                , new Person("老李", 48))
                .collect(Collectors.toList());
        System.out.println(JSON.toJSONString(persons));
        //[{"age":35,"name":"老王"},{"age":23,"name":"老张"},{"age":56,"name":"老周"},{"age":48,"name":"老例"}]

        //    找出年龄最大的人,并输入姓名和年龄

        persons.stream()
                .sorted((p1, p2) -> p2.getAge() - p1.getAge())
                .limit(1).forEach((person) -> {
            System.out.println("sorted+limit:" + JSON.toJSONString(person));
            //   sorted+limit:{"age":56,"name":"老周"}
        });

        persons.stream()
                .sorted((p1, p2) -> p1.getAge() - p2.getAge())
                .skip(persons.size() - 1).forEach((person) -> {
            System.out.println("sorted+skip:" + JSON.toJSONString(person));
            //      sorted+skip:{"age":56,"name":"老周"}
        });

        Optional max = persons.stream()
                .max((p1, p2) -> p1.getAge() - p2.getAge());
        max.ifPresent((person -> {
            System.out.println("max:" + JSON.toJSONString(person));
            //   max:{"age":56,"name":"老周"}
        }));

        Optional min = persons.stream()
                .min((p1, p2) -> p2.getAge() - p1.getAge());
        min.ifPresent((person -> {
            System.out.println("min:" + JSON.toJSONString(person));
            //    min:{"age":56,"name":"老周"}
        }));



        Optional cacl2 = persons.stream()
                .reduce((p1, p2) -> p1.getAge() > p2.getAge() ? p1 : p2);
        cacl2.ifPresent(person -> {
            System.out.println("reduce" + JSON.toJSONString(person));
            //   reduce{"age":56,"name":"老周"}
        });

    }
[{"age":35,"name":"老王"},{"age":23,"name":"老张"},{"age":56,"name":"老周"},{"age":48,"name":"老李"}]
sorted+limit:{"age":56,"name":"老周"}
sorted+skip:{"age":56,"name":"老周"}
max:{"age":56,"name":"老周"}
min:{"age":56,"name":"老周"}
reduce{"age":56,"name":"老周"}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/846722.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号