无法向ArrayList添加更多元素

时间:2016-03-11 22:41:55

标签: java arraylist

我试图向ArrayList添加更多元素,但我收到了这些错误:

java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
    at java.util.ArrayList$Itr.next(ArrayList.java:851)
    at Gestor.adicionarProduto(Gestor.java:32)

我要做的第一件事就是检查Arraylist是否是emtpy来添加第一个元素。我正在检查ArrayList是否为空以进行比较并添加更多元素。

   if(!arProduct.isEmpty()){
        for(Produto produto : arProduct){
            String receivePosicao = letraPrateleira.toLowerCase() + nrPosicao;
            String searchPosicao = produto.getLetraPrateleira() + produto.getNrPosicao();

            if(receivePosicao.equals(searchPosicao)){
                System.out.println("Esta posição encontra-se ocupada por outro produto.");
            }else{
                arProduct.add(new Produto(nomeProduto, precoProduto, mensagemAdicional, letraPrateleira, nrPosicao)); 
            }

        }

    }

    if(arProduct.isEmpty(){
        arProduto.add(new Produto("a", 2, "a", "a", 1)); 
    }

我做错了什么?

感谢。

2 个答案:

答案 0 :(得分:0)

您在迭代列表时添加元素!

在临时列表中添加元素,并在迭代后添加它们:

List<Produto> toAdd = new ArrayList<>();
for(Produto produto : arProduct) {
   // ...
   toAdd.add(new Produto(nomeProduto, precoProduto, mensagemAdicional, letraPrateleira, nrPosicao));
}
produto.addAll(toAdd);

答案 1 :(得分:0)

迭代时,您无法修改列表。 如果需要修改列表,则使方法返回布尔值,然后在外部修改列表。

else语句和第二个if将返回true,这应该导致列表被修改。