这段代码这么写有什么问题?
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中。