编辑
2022-11-09
遇到的问题
00
请注意,本文编写于 876 天前,最后修改于 876 天前,其中某些信息可能已经过时。

目录

直接移除数据会出现异常

直接移除数据会出现异常

比如list的大小为2,下标为1 我进行遍历,size为0时,发现不符合我的要求我就进行移除, list的大小就为1,下标就变成了0,原来下标为1的数据就顶替了下标为0的数据 然后for循环就会自动跳出,因为程序认为自己遍历了下表为0的数据,下一条数据又没了 实际上现在下标为0的数据,就是原来的第二条,这样就会造成数据错位

我们就需要用到迭代器iterator,它是一个超级接口,隔离对容器的遍历操作和底层实现,从而解耦。 hasnext()方法是判断是否还有元素 next()方法是获取下一个元素 remove()方法是移除当前的对象

List<RecPaperBorrowReturnResponse> list= iPage.getRecords(); int num=0; RecPaperBorrowReturnResponse response; //把list放入迭代器,避免直接操作list造成数据错位 Iterator<RecPaperBorrowReturnResponse> iterator= list.iterator(); while (iterator.hasNext()){ response=iterator.next(); Date now=new Date(); Date borrowTime=response.getBorrowTime(); borrowTime= DateUtils.addDays(borrowTime,response.getBorrowDays()); if (DateUtils.afterDate(now,borrowTime)){ long overdueDay= DateUtil.betweenDay(borrowTime,now,true); if (overdueDay>0){ response.setOverdueDays(String.valueOf(overdueDay)); } }else{ //如果勾选超期,就移除未超期的list if (request.getOverdue()!=null&&request.getOverdue()==1){ iterator.remove(); num++; } } }

本文作者:Weee

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!