Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

546
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda