最近遇到一个需求,就是嵌套移除list对象在网上找了些参考后发现都不太适合自己捣鼓了半天后出来得结果,故做下记录。
一、最终代码
List<PersonPO> oldPO = personDao.findByPhones(userListVO, systemId);
Integer failsize = userListVO.size();
Iterator it = null;
//说明我们有要除去这些有的
if (oldPO.size() > 0) {
for (int i = 0; i < oldPO.size(); i++) {
//循环用得for
for (it = userListVO.iterator(); it.hasNext(); ) {
OauthUserVO userVO = (OauthUserVO) it.next();
if (oldPO.get(i).getPhone().equals(userVO.getPhone())) {
returnFalsList.add(userVO);
it.remove();
continue;
}
}
}
}
userListVO = Lists.newArrayList(it);
上述的Iterator 循环是For循环做当下面while循环时只能删除一个元素
二原错误代码:
Iterator<OauthUserVO> it = userListVO.iterator();
if (oldPO.size() > 0) {
for (int i = 0; i < oldPO.size(); i++) {
while(it.hasNext()){
OauthUserVO userVO = it.next();
if (oldPO.get(i).getPhone().equals(userVO.getPhone())) {
returnFalsList.add(userVO);
it.remove();
continue;
}
}
}
}
userListVO = Lists.newArrayList(it);
因为我看网上大部分循环删除list对象都是用的Iterator的while循环。所以之前就使用while循环。但是在嵌套中使用时一直只删除一个,我debug查看时看到for循环的值和while循环的值同时都在做变化。一直就删除不了。
可能是我写的有些问题但是一直未找到原因这也是贴出来下面错误代码的原因。希望大家给指导下。
也感谢下面博主得参考
https://blog.youkuaiyun.com/zhaozuhao110/article/details/88116831