首页 > 其他分享 >Integer对象比较

Integer对象比较

时间:2022-11-10 18:13:29浏览次数:37  
标签:return stream 对象 menu List 目录 Integer 比较

今天有个需求

需要写个目录

这不是简简单单

把之前的代码复制一份  修修变量名就大功告成了

 

但是出现了一个bug  改了两个小时

 

以为Integer是对象   所以两个Integer类型对象比较  比较的是内存地址  导致目录出现错误

真是无语

 

list是目录表所有数据  

//组装成树形结构
List<AnalysisMenuVO> menuVOList = list.stream().filter(menu -> menu.getParentId()==0)
.sorted(Comparator.comparingInt(AnalysisMenuVO::getOrderNum))
.map(menu -> {
menu.setChildren(getChildrens(menu,list));
return menu;
}).collect(Collectors.toList());




//root 是父节点
private List<AnalysisMenuVO> getChildrens(AnalysisMenuVO root, List<AnalysisMenuVO> all) {
List<AnalysisMenuVO> children = all.stream().filter(menu -> menu.getParentId()==root.getMenuId() )
.sorted(Comparator.comparingInt(x -> ( x.getOrderNum())))
.map(menu -> {

menu.setChildren(getChildrens(menu,all));

return menu;
}).collect(Collectors.toList());
return children;
}

递归调用getchildrens 设置子列表
由于 最顶级目录是 0 所以目录会出来一层
其他层级目录 以为 是Integer 类型 不会自动拆箱 用的是对象比较 导致下面的出不来

一开始以为是底层查不到 被设置为null的

stream不好debug 还要把stream拆成散的 再去一点点查 真是无语

标签:return,stream,对象,menu,List,目录,Integer,比较
From: https://www.cnblogs.com/bawanglong168/p/16877932.html

相关文章

  • 面向对象
    对象的内存:1.加载class文件2.申明局部变量3.在堆内存中开辟空间4.默认初始化5.显式初始化6.构造方法初始化7.将堆内存中的地址赋值给左边的变量printfSystem......
  • 如何在STL容器内存储对象的引用
    示例代码:classgfg{private:inta;gfg(constgfg&)=delete;gfg&operator=(constgfg&)=delete;public:explicitgfg(inta){this->a=a;}......
  • Java零基础-面向对象入门案例:宠物商店
    Java零基础-面向对象入门案例:宠物商店案例需求:设计宠物类,包含有:编号、名称、年龄、种类、性别、是否防疫等信息,设计宠物商店,实现宠物添加、删除、修改宠物信息,记录宠物......
  • face_recognition实现人脸相似度比较
    face_recognitionface_recognition是github上一个非常有名气的人脸识别开源工具包,我们可以通过以下指令安装到python环境内$pipinstallface_recognition加载人脸图片ima......
  • Mongodb数据库和MySQL的比较
    谈谈Mongodb和MySQL的区别什么是Mongodb数据库Mongodb是一个介于关系数据库和非关系数据库之间的产品(Nosql),非关系型数据库(nosql),属于文档型数据库。文档是mongoDB......
  • simpread-TypeScript 小状况之遍历对象属性 - 掘金
    本文由简悦SimpRead转码,原文地址juejin.cn在TypeScript里面,当需要遍历对象的时候,经常就会遇到下图所示的错误提示。前言最近开始在复杂项目中使用TypeScri......
  • 1.逗号分割的String对象,转成集合。
    1.直接调用String对象的split方法。  2.再调用Arrays.asList()方法。TRANSLATEwithxEnglishArabicHebrewPolishBulgarianHindiPortuguese......
  • SQLServer比较两个数据库的对象
     两个变量,表示要比较的数据库名:@SourceDatabase@DestinationDatabaseDECLARE@SourceDatabaseVARCHAR(50)DECLARE@DestinationDatabaseVARCHAR(50)DECLARE@SQL......
  • Java中的对象使用、局部变量与成员变量的区别
    对象的使用对象的使用格式创建对象:类名对象名=new类名();使用对象访问类中的成员:对象名.成员变量;对象名.成员方法();对象的使用格式举例:publicstatic......
  • [JavaScript-06]面向对象
    1.面向对象//大括号就是对象p={a:1,b:2,c:3,}//系统对象全部基于window//console.log(window);//window.alert(1);//alert(2);//console......