[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