我试图向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));
}
我做错了什么?
感谢。
答案 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,这应该导致列表被修改。