SORU
10 Aralık 2009, PERŞEMBE


üzerinden yineleme ve bir harita çıkarma

Yapıyordum:

for (Object key : map.keySet())
    if (something)
        map.remove(key);

bir ConcurrentModificationException attı, o yüzden değiştirdim:

for (Object key : new ArrayList<Object>(map.keySet()))
    if (something)
        map.remove(key);

bu, ve Haritayı değiştir diğer yordamları senkronize engeller.

daha iyi bir çözüm var mı?

eğer kimse daha iyi bir çözüm ile, ilk söylemek gelirse hayır kene ;) alır

CEVAP
10 Aralık 2009, PERŞEMBE


Burada bir for döngüsü içinde yineleyici giriş kaldırmak için kullanmak için bir kod örneği.

    Map<String, String> map = new HashMap<String, String>() {
      {
        put("test", "test123");
        put("test2", "test456");
      }
    };

    for(Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); it.hasNext(); ) {
      Map.Entry<String, String> entry = it.next();
      if(entry.getKey().equals("test")) {
        it.remove();
      }
    }

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • NextKsa

    NextKsa

    7 EKİM 2009
  • Ryan Billy

    Ryan Billy

    30 EKİM 2006
  • UberFacts

    UberFacts

    26 EKİM 2013