Belirli bir tip Map
için, keySet
, values
ve entries
yöntemlerinin döndürdüğü Toplama görünümleri üzerinde yineleme yöntemlerinin aynı sırayla yinelenen herhangi bir garantisi var mı?Belirli bir Haritanın farklı Koleksiyon görünümleri boyunca yineleme sırası tutarlı mı?
Arka plan: Ben
public static void doSomethingForEachEntry(Map<String, Integer> someMap) {
for (String key : someMap.keySet()) {
doSomething(someMap.get(key));
}
}
public static void doSomethingForEachEntry(Map<String, Integer> someMap) {
for (Integer value : someMap.values()) {
doSomething(value);
}
}
için değişmeden iterasyon düzeni sağlamak için garanti edilir dönüştüren olup olmadığını merak ediyorum.
Başlıktaki soru görünür ve yayınınızda aynı değildir. Tam olarak neyi bilmek istiyorsun? Anahtarların iade edilmesi, değerlerin sıralanmasıyla aynı mı?Ya da ikinci aramadaki sipariş ilk aramayla aynı mı olacak? – Tunaki
Yineleme sırasına güvenmemelisiniz (TreeMap gibi bazı düzenli Haritaları kullanmıyorsanız). Örneğin, bir HashMap kullanıyorsanız, Haritanın mevcut durumu için olsa bile, her ikisi de() 've' keySet() 'aynı yineleme sırasını verir, HashMap'e eleman ekledikten sonra sipariş değişebilir. – Eran
@Tunaki Benim sorularım, kod snippet'lerinin her ikisinin de aynı sırayla değerleri işleyeceği anlamında, değerlerin sırasına göre tuşların sıralanması ile aynı olacaktır. – Hulk