List集合遍历java.util.ConcurrentModificationException问题解决

tech2024-01-21  75

一、解决方式,采用如下方式即可

@SuppressWarnings("unchecked") List<UserInfosDto> userInfosDtoList = response.getData(); // logger.info("信息的返回结果:{}", userInfosDtoList.toString()); Iterator<UserInfosDto> iterator = userInfosDtoList.iterator(); while (iterator.hasNext()) { UserInfosDto userInfosDto = iterator.next(); String termId = userInfosDto.getTermId(); if (userInfosDto.getIsPay() != ConstantEnum.USER_HAS_PAY.VALUES()) { iterator.remove(); } } // logger.info("信息筛选后的返回结果:{}", userInfosDtoList.toString()); return userInfosDtoList; 补充:多线程非共享变量的情况下不会出现问题。

二、分析原因

final void checkForComodification() { if (modCount != expectedModCount) throw new ConcurrentModificationException(); }

迭代器中的modCount和expectedModCount值不一样则会抛出这个异常。 参考文章一 参考文章二

最新回复(0)