这段代码这么写有什么问题

在这里插入图片描述

这段代码这么写有什么问题?

List<String> baseRelList1 = new ArrayList<>();
            epmPersonList.forEach(Obj ->{
    
    
                interviewBacklogMessageList.forEach(t ->{
    
    
                    if (!Obj.equals(t.getPsnNum())){
    
    
                        baseRelList1.add(Obj);
                    }
                });
            });

这段代码存在一个问题,即在遍历interviewBacklogMessageList时,无论是否匹配到相应的条件,都会将Obj添加到baseRelList1中。这是因为在内部的forEach循环中使用了Obj,而不是interviewBacklogMessageList的元素进行比较。这可能导致baseRelList1中存在重复的元素或者包含了不符合条件的元素。如果想要实现正确的逻辑,需要修改代码如下:

List<String> baseRelList1 = new ArrayList<>();
epmPersonList.forEach(Obj ->{
    
    
    boolean foundMatch = interviewBacklogMessageList.stream()
            .anyMatch(t -> Obj.equals(t.getPsnNum()));
    if (!foundMatch){
    
    
        baseRelList1.add(Obj);
    }
});

这样修改后,只有在interviewBacklogMessageList中不存在与Obj相等的PsnNum时,才会将Obj添加到baseRelList1中。

猜你喜欢

转载自blog.csdn.net/weixin_50503886/article/details/132639469
今日推荐