[Java lista] ConcurrentHasMap és elem eltávolítása
Richard Oliver Legendi
roante at freemail.hu
2009. Jún. 3., Sze, 11:52:41 CEST
i.remove() lesz a te baratod.
Btw hozzafersz az entry-khez is kozvetlenul az entrySet()-tel, hatha azt
hasznosabbnak iteled (tudod hivni a remove(entry.getKey())-t), ld. a kodot alabb
(+genericeket is kifizetodo lehet hasznalni, amennyiben van ra lehetoseged).
Ricsi
public class ConcurrentHashMapTest {
public static void main(final String[] args) {
final ConcurrentHashMap<String, String> hmap =
new ConcurrentHashMap<String, String>(); {{
hmap.put("a", "1"); hmap.put("b", "2");
hmap.put("c", "3"); hmap.put("d", "4");
}}
final Iterator<String> i = hmap.keySet().iterator();
while (i.hasNext()) {
final String str = i.next();
if (Math.random() < 0.5d) {
System.out.println(str + " removed");
i.remove();
}
}
System.out.println(hmap);
for (Map.Entry<String, String> entry : hmap.entrySet()) {
System.out.println(entry.getKey() + " -> " + entry.getValue());
}
}
}
András Csányi wrote:
> 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?
>
> Néztem a neten is és ebben futottam:
> http://www.java2s.com/Tutorial/Java/0140__Collections/RemovingKeyValuePairspublicObjectremoveObjectkey.htm
> A 9. 25. 18. pont erről szól, csak nincsen kidolgozva. Máshol egyelőre
> nem találtam megoldást.
>
> Előre is köszönöm!
>
További információk a(z) Javalist levelezőlistáról