获取一个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判断是否存在值,进行接下来的业务逻辑操作。
方法一:
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()));
方法二:
Optional<NeoDepart> enterpriseDepartOptional = fullParent.stream()
.filter(t -> t.getIsEnterprise() == 1)
.sorted(Comparator.comparingInt(NeoDepart::getLevel).reversed())
.findFirst();
enterpriseDepartOptional.ifPresent(neoDepart -> neoUser.setTopBusinessClientCode(neoDepart.getDepartCode()));
方法三:
Optional<NeoDepart> enterpriseDepartOptional = fullParent.stream()
.filter(t -> t.getIsEnterprise() == 1).max(Comparator.comparingInt(NeoDepart::getLevel));
enterpriseDepartOptional.ifPresent(neoDepart -> neoUser.setTopBusinessClientCode(neoDepart.getDepartCode()));
其中.filter()可进行条件判断:如:
.filter(t -> t.getIsEnterprise() == 1 && t.getLevel() < 5)