前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java8(jdk1.8)Optional排序倒叙以及取最后一条数据的问题

Java8(jdk1.8)Optional排序倒叙以及取最后一条数据的问题

作者头像
botkenni
发布2022-03-24 11:45:57
2.5K0
发布2022-03-24 11:45:57
举报
文章被收录于专栏:IT码农

获取一个list数组查到level的所有数据,然后进行过滤去重,根据level进行排序,取到查出的list数据中level最大的一条数据。

思路: 1.先用filter进行过滤(去重) 2.sort方法进行根据int类型进行排序(第一条的level最小) 3.排序之后用reversed方法进行颠倒 4.再用findFirst即可取到最后一条

注意: .sorted(Comparator.comparingInt((NeoDepart m) -> m.getLevel()).reversed()) 使用sorted进行排序之后接着用reversed进行倒叙时,容易出现找不到类的错误,原因是排序之后再倒叙,倒叙后的list不知道自己是属于哪个类,所以要在排序的对象前加一个类名 (NeoDepart ) 这样,之后用isPresent判断是否存在值,进行接下来的业务逻辑操作。

代码语言:javascript
复制
方法一:
Optional<NeoDepart> enterpriseDepartOptional = fullParent.stream()
        .filter(t -> t.getIsEnterprise() == 1)
        .sorted(Comparator.comparingInt((NeoDepart m) -> m.getLevel()).reversed())
        .findFirst();
enterpriseDepartOptional.ifPresent(neoDepart -> neoUser.setTopBusinessClientCode(neoDepart.getDepartCode()));
代码语言:javascript
复制
方法二:
Optional<NeoDepart> enterpriseDepartOptional = fullParent.stream()
        .filter(t -> t.getIsEnterprise() == 1)
        .sorted(Comparator.comparingInt(NeoDepart::getLevel).reversed())
        .findFirst();
enterpriseDepartOptional.ifPresent(neoDepart -> neoUser.setTopBusinessClientCode(neoDepart.getDepartCode()));
代码语言:javascript
复制
方法三:
Optional<NeoDepart> enterpriseDepartOptional = fullParent.stream()
        .filter(t -> t.getIsEnterprise() == 1).max(Comparator.comparingInt(NeoDepart::getLevel));
enterpriseDepartOptional.ifPresent(neoDepart -> neoUser.setTopBusinessClientCode(neoDepart.getDepartCode()));

其中.filter()可进行条件判断:如:

代码语言:javascript
复制
.filter(t -> t.getIsEnterprise() == 1 && t.getLevel() < 5)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/02/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档