Você não pode alterar o conteúdo de uma coleção sendo iterada pelo enhanced for.
Ou você muda seu laço para um for tradicional ou então popula uma lista temporária com os elementos a serem removidos e após o enhanced for você os remove, dessa forma:
List<Object>removidos=newArrayList<>();for(Objecttemp:memoria){
if(temp.ogc()){
temp.jMake();temp.hMake();}else{
removidos.add(temp); // adiciona temp à lista de objetos a remover}
}
memoria.removeAll(removidos); // fora do for, remove os elementos
A
Andre_Costa
hum… interessante. se eu colocar como parâmetro um arraylist ele remove do array principal todos os objetos contidos no auxiliar?
Solucao aceita
staroski
Se for algo mais ou menos assim:
publicvoidmeuMetodo(List<Tipo>principal){
List<Tipo>removidos=newArrayList<>();for(Tipotemp:principal){
if(temp.ogc()){
temp.jMake();temp.hMake();}else{
removidos.add(temp); // adiciona temp à lista de objetos a remover}
}
principal.removeAll(removidos); // fora do for, remove os elementos
}