[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