2009-06-10 13 views

cevap

42

Sen

myMap.keySet().iterator(); 

hatta varlığını bilmek gerekir olmamalıdır arayarak olsun; Bu sadece uygulamanın bir eseri. Bildiğiniz her şey için, anahtarları tekrarlamak için uçan maymunları kullanıyor olabilirler; Spesifikasyona göre yinelendikleri sürece, nasıl yaptıklarının önemi yoktur. Bu arada

, sen HashMapKeyIterator denilen özel sınıfa sahip olduğunu biliyor muydunuz (yapın ConcurrentHashMap, ConcurrentSkipListMap, EnumMap, IdentityHashMap, TreeMap ve WeakHashMap)?
Bu, HashMap anahtarıyla nasıl geçiş yaptığınızda fark yaratır mı?


Düzenleme: Yorumunuza Yanıtı, bir Map içinde tüm anahtar-değer çiftleri üzerinde yineleme çalışıyorsanız unutmayın, tuşların üzerinde yineleme ve aramaya daha iyi bir yol yoktur Her biri için get. entrySet() yöntemi, daha sonra yineleyebileceğiniz tüm anahtar/değer çiftlerini Set alır. Bunun yerine yazma:

for (Key key : myMap.keySet()) { 
    Value val = myMap.get(key); 
    ... 
} 

yazman gereken: İsterseniz

for (Map.Entry<Key, Value> entry : myMap.entrySet()) { 
    doSomethingWithKey(entry.getKey()); 
    doSomethingWithValue(entry.getValue()); 
    ... 
} 

Ayrıca values() ile değerlerle tekrarlayabilirsiniz. keySet, entrySet ve valuesMap interface tanımlanan olduğu için ikisi de değil, sadece LinkedHashMap herhangi Map için çalışacağını

Not.

+1

Yalnızca iç özel sınıfı görünceye kadar LinkedHashMap üzerinde yineleyebileceğim bir şey olmadı. Cevabınız için teşekkürler. –

+0

Hangi kullanımının entrySet() olduğunu bilmiyordum. Ama, hemen hemen her yerde onun gerçekten yararlı i HashMap kullanın. Teşekkür @Michael – sravanreddy001

3

Sen LinkedHashMap iç uygulaması kapsamında tanımlanan (kaynak kodunda yani ama API tanımlanmayan) olduğu şey kullanmamalısınız. Bir sonraki sürümde dahili uygulama değişirse ne olur? Bunu kullanarak tüm kodunuz kırılacak.

Sen API için kod ve

myMap.keySet().iterator() 
3

doğrudan kullanamaz, bu yüzden özel sınıf gibi bir şeyler yapmalıyım.

Normal Yineleyici kullandığınızda, bunun bir örneği döndürülür.

İlgili konular