Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

541
Visualizações
ConcurrentModificationException -> ¿Cómo puedo cambiar mi código para evitar que arroje este error?
for (FPlayer p : fPlayer.getFaction().getOnline()) { p.setFaction(null); }

Básicamente, el método getOnline devuelve una lista de matriz de los FPlayers actuales que están en línea. Cuando el FPlayer se elimina de su facción, la facción se establece en nulo (p.setFaction(null)).

No puedo pensar en cómo cambiar mi código para evitar que lance la ConcurrentModificationException. He usado un iterador pero aún así, it.next().setFaction(null) todavía arroja la misma excepción.

EDITAR: UTILIZAR UN ITERADOR DE LISTA:

 ListIterator<FPlayer> it = fPlayer.getFaction().getOnline().listIterator(); while (it.hasNext()) { it.next().setFaction(null); }

Causado por: java.util.ConcurrentModificationException

en la linea

it.next().setFaction(null)

EDIT #2: Establecer método de facción:

 public void setFaction(Faction faction) { if (hasFaction()) { this.faction.getOnline().remove(this); } this.faction = faction; if (faction != null) { this.faction.getOnline().add(this); } }
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Sí, cambie su código para que no cambie la colección dentro del ciclo que está ejecutando. Por ejemplo, cree una copia de la colección antes de iterar.

 for (Foo foo : new ArrayList(myFoos)) { if (foo.isBar()) { myFoos.remove(foo); } }

Iterar y cambiar la lista sin el new ArrayList() habría causado una ConcurrentModificationException

over 4 years ago · Santiago Trujillo Relatório

0

Esto sucede porque mientras itera está eliminando los datos de la lista.

Un par de soluciones.

  1. Si el tamaño de la lista es pequeño, conviértalo en una matriz y luego recorra

  2. Use for loop para la iteración.

     for(int i=0;i<fPlayer.getFaction().getOnline().size();i++) { // Condition to check if true if(true) { fPlayer.getFaction().getOnline().remove(i); i--; } }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda