[Java lista] ConcurrentHasMap és elem eltávolítása

Tamás Magyar magyusz at gmail.com
2009. Jún. 3., Sze, 11:54:52 CEST


2009/6/3 András Csányi <sayusi.ando at gmail.com>:
> Sziasztok!
>
> Eléggé kezdő a kérdésem - lévén én is az vagyok ;) , de nem találok rá választ.
> A feladat lényege, hogy a kollekcióban tárolt objektumoknak megnézem
> egy tulajdonságát(meddig érvényesek) és ha ez lejárt, akkor kikerül a
> kollekcióból.
>
> Van egy ConcurrentHashMap, amelyen így megyek végig:
>
> Iterator i = listOfPlanets.keySet().iterator();
>    while(i.hasNext()) {
>      Planet pl = (Planet) i.next();
>      if(pl.getDeadTime() < this.getUnixtime()) {
>        //listOfPlanets.remove(pl, pl);
>      }
>    }
>
> Az ifen belül ki kellene szednem a kollekcióból az adott objektumot.
> De nem ismerem a kulcsát.
> Van két metódus amellyel ezt meg tudom tenni:
> remove(Object key, Object value);
> remove(Object key);
>
>  A kérdésem lényege, hogy hogyan tudom kibányászni ebből a szép kis
> kollekcióból, hogy egy benne lévő objektumnak mi a kulcsa? Vagy ennek
> másképpen kellene nekimenni?

Ismered a kulcsát: pl, de az i.remove() elegánsabb (bár itt mivel
concurrent, nem dobna ConcurrentModificationException-t).


Magyusz


További információk a(z) Javalist levelezőlistáról