Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

537
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!