解决办法:移除并发修改的语句 java.util.ConcurrentModificationException java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) java.util.ArrayList$Itr.next(ArrayList.java:851) cn.banwxf.shoppingmall.service.CartService.getCartInfo(CartService.java:25) cn.banwxf.shoppingmall.servlet.CartServlet.doGet(CartServlet.java:35) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 出现这种情况的原因是,当你在遍历集合时,同时对集合的大小做了修改。 例如我是这样的:我想在双重遍历时将已经得到的元素移除集合 for (CartProduct cartProduct : resultCartProductList) { // 如果是同一家商店的 String productId = cartProduct.getProductId(); String shopName = cartProduct.getShopName(); ArrayList<CartProduct> shopProductList = new ArrayList<>(); // for (CartProduct cartProduct2 : resultCartProductList) { // if (productId.equals(cartProduct2.getProductId())) { // shopProductList.add(cartProduct2); resultCartProductList.remove(cartProduct2); resultCartProductList // } // } for (int i = 0; i < resultCartProductList.size(); i++) { CartProduct cartProduct2 = resultCartProductList.get(i); if (productId.equals(cartProduct2.getProductId())) { shopProductList.add(cartProduct2); // resultCartProductList.remove(cartProduct2); resultCartProductList.remove(i); } } CartShopPorduct shopPorduct = new CartShopPorduct(shopName,shopProductList,""); productlist.add(shopPorduct); } 这样肯定是不行的,所以解决办法就是,移除修改集合的代。![]()
java.util.ConcurrentModificationException ,遍历集合并同时修改集合,并发造成的异常解决办法
最新推荐文章于 2024-05-30 13:36:00 发布