重点是break;
List<GoodsInfo> goodsInfoList = this.iGoodsInfoService.getBaseMapper().selectList(new LambdaQueryWrapper<GoodsInfo>().eq(GoodsInfo::getStatus, 1));
List<MainGoodsInfo> mainGoodsInfoList = iMainGoodsInfoService.getBaseMapper().selectList(new LambdaQueryWrapper<MainGoodsInfo>().in(MainGoodsInfo::getStatus, 1, 0));
for (MainGoodsInfo mainGoodsInfo : mainGoodsInfoList) {
if (goodsInfoList.size()>0) {
for (GoodsInfo goodsInfo : goodsInfoList) {
if (goodsInfo.getId().equals(mainGoodsInfo.getGoodsId())){
goodsInfoList.remove(goodsInfo);
break;
}
}
}
}
原因是在遍历list的过程中,如果修改了元素,会导致list中索引与对应的值不同,因此抛出异常;
第二种
for (MainGoodsInfo mainGoodsInfo : mainGoodsInfoList) {
Iterator<GoodsInfo> iterator = lists.iterator();
while(iterator.hasNext()){
GoodsInfo o = iterator.next();
if(goodsInfo.getId().equals(mainGoodsInfo.getGoodsId())){
iterator.remove(); //注意这个地方
}
}}