我遇到一个奇怪的问题。正在获取java.util.ConcurrentModificationException。但是我没有修改当前集合。请帮忙。

方法调用

setAllAddress((List<AddressBean>) usrProfileResp.getAddressBeanList());
setShippingAddresses(getAllAddress());


方法

public List<AddressBean> getAllAddress() {
    return allAddress;
}

public void setShippingAddresses(List<AddressTokenBean> shippingAddresses) {
        shippingAddresses = new ArrayList<AddressBean>();
        List<AddressBean> addresses = getAllAddress();
        if (addresses != null && addresses.size() > 0) {
            for (AddressBean addr : addresses) { // EXCEPTION OCCURS HERE
                if (!Constants.BILLING_ADDRESS.equals(addr.getAddressType())) {
                    shippingAddresses.add(addr);
                }
            }
        }
}

最佳答案

最可能的解释是addressesshippingAddresses引用相同的集合。您可以在调试器中进行检查。

getAllAddresses()是否完全使用shippingAddresses吗?

您确定此集合没有在其他线程中被修改吗?这是一直发生还是仅偶尔发生?

10-06 14:00