请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于AdUnitServiceImpl中isRelatedCreativeExist的问题

private boolean isRelatedCreativeExist(List<Long> creativeIds) {
    if (CollectionUtils.isEmpty(creativeIds)) {
        return false;
    }
    return creativeRepository.findAllById(creativeIds).size() == new HashSet<>(creativeIds).size();
}

这个方法的返回值为什么不能用下面这个值代替:
return creativeIds.sized() == new HashSet<>(creativeIds).size();

正在回答 回答被采纳积分+3

2回答

张勤一 2020-03-17 12:48:01

同学你好:

    我需要先确保传递进来的 creativeId 一定出现在数据库表里面。


    欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!

1 回复 有任何疑惑可以回复我~
提问者 慕哥3156158 2020-03-17 14:14:27

那比如creativeIds={1, 2, 2, 4};

return creativeRepository.findAllById(creativeIds).size() == new HashSet<>(creativeIds).size();

creativeId = 4是不在数据库中的,creativeId=1和2都是在数据库中的,按照代码中的return的返回值,左边应该等于3,右边也会等于3,isRelatedCreativeExist方法的返回值是true,在createCreativeUnit方法中能创建creativeUnits,但creativeIds中包含不在数据库中的creativeId,这会有问题的。实际上,只有creativeIds中的所有元素都在数据库中并且没有重复时,那么才能批量创建creativeUnit。我的理解对吗?

0 回复 有任何疑惑可以回复我~
  • 左边等于2,右边等于3,怎么可能会相等呢?
    回复 有任何疑惑可以回复我~ 2020-03-17 14:44:50
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信