Avatar billede flamsk Nybegynder
21. oktober 2005 - 10:35 Der er 3 kommentarer og
1 løsning

Slette Object i ArrayList imens man læser ArrayListen igennem

Hejsa

Jeg en arrayliste som består af objekter som indeholder en  boolean værdi som fortæller om objektet skal slettes.

jeg vil gerne have lavet en metode som sletter alle de objekter som er mærkeret til at slettes.

dvs. at listen skal køres igennem imens man fjerner objekter.

hvordan løser man sådan en opgave ?

private void removeMarkedGameEntities()
{
  //Henter arraylist ud af hashmap
  for (ArrayList<GameEntity> aryList : gameEntityLists.values())
  {
    for (GameEntity entity : aryList)
    {
    if (entity.isMarkedDeletion())
    {
    aryList.remove(entity);
    }
    }
  }
}

overstående vil jo nok ikke virke da man ikke kan slette elementer imens man Iterere.
Avatar billede arne_v Ekspert
21. oktober 2005 - 10:41 #1
prøv en gammeldags for løkke *BAGFRA*
Avatar billede flamsk Nybegynder
21. oktober 2005 - 11:31 #2
Ja selvfølgelig, send et svar
Avatar billede arne_v Ekspert
21. oktober 2005 - 11:33 #3
svar
Avatar billede eydun Nybegynder
21. oktober 2005 - 18:09 #4
Jo, det kan du godt, så længe du sletter igennem iteratoren...

private void removeMarkedGameEntities() {
  // Henter arraylist ud af hashmap
  for (ArrayList<GameEntity> aryList : gameEntityLists.values()) {
    Iterator<GameEntity> it = aryList.iterator();
    while (it.hasNext()) {
      GameEntity entity = it.next();
      if (entity.isMarkedDeletion()) {
        it.remove();
      }
    }
  }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester