grain-Edu-Note part15 谨慎对待值类型和引用类型的相等判断

== 和 equals

对于String , == 是在判断两者是否为同一存储地址
对于数值,==是在判断两者的值是否相同

对于String,equals是在判断两者的“值”是否相同,并不比较地址

例子

其实上面的知识点,心理是知道的
但是,往往有时误以为返回的是数值而非String
为了省事直接使用了==
下面的例子,我最开始使用的==进行判断

List<Video> videosInChapter = videos.stream().filter(video->video.getChapterId()==chapter.getId()).collect(Collectors.toList());

如上,得到的过滤后的数据一直为空,排查了很长时间

@Override
    public List<ChapterVo> nestedList(String courseId) {

        //组装章节列表
        QueryWrapper<Chapter> chapterQueryWrapper = new QueryWrapper<>();
        chapterQueryWrapper.eq("course_id",courseId);
        List<Chapter> chapters = baseMapper.selectList(chapterQueryWrapper);

        QueryWrapper<Video> videoQueryWrapper = new QueryWrapper<>();
        videoQueryWrapper.eq("course_id",courseId);
        List<Video> videos = videoMapper.selectList(videoQueryWrapper);

        List<ChapterVo> chapterVos = new ArrayList<>();

        chapters.forEach(chapter -> {
            ChapterVo chapterVo = new ChapterVo();
            BeanUtils.copyProperties(chapter,chapterVo);

            List<VideoVo> videoVos = new ArrayList<>();

            List<Video> videosInChapter = videos.stream().filter(video->video.getChapterId().equals(chapter.getId())).collect(Collectors.toList());

            videosInChapter.forEach(video -> {
                VideoVo  videoVo = new VideoVo();
                BeanUtils.copyProperties(video,videoVo);
                videoVos.add(videoVo);
            });
            chapterVo.setChildren(videoVos);
            chapterVos.add(chapterVo);
        });

        return chapterVos;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值