2012-03-13 12 views
5

.keySet() öğesinin, bir sipariş döndürdüğünü biliyorum.hashmap.keyset(), hashmap'a eklendikleri sırayla anahtarları döndürecek mi?

Anlatabildiğim kadarıyla, bu, anahtarların hashmap'a eklendiği sırayı takip etmek için bir dizi anahtar listesini tutmam gerektiği anlamına mı geliyor?

+1

olası yinelenen http://stackoverflow.com/questions/9583650/behaviour-of-linkedhashmaps-keyset-and-values -metreler) –

+0

Bu, "* HashMap'in * keySet yönteminin davranışı" ile ilgili bir açıklamadır. – aioobe

cevap

8

[...] Ben anahtarlar, doğru HashMap eklendi sırayı izlemek için anahtarların bir dizi listesini tutmak gerekir demektir?

Evet, doğru. Ya da, sizin için bunu yapan bir LinkedHashMap kullanabilirsiniz. belgelerine

:

[...] Bu uygulama onun girdilerinin tüm çalışan doubly bağlı listesini tutar ki HashMap farklıdır. Bu bağlantılı liste, normalde anahtarların haritasına yerleştirildiği (ekleme sırası) olan yineleme sıralamasını tanımlar. [...]

[LinkedHashMap en keyset Davranış() ve değerler() yöntemleri] (içinde
+0

Başka bir olasılık bir TreeMap. Tüm bu sınıfların, yinelemenin sırayla yapıldığını, keySet() tarafından döndürülen Set'in belirli bir sıraya sahip olacağını garanti etmediğini unutmayın. –

+0

bağlantılı hashmap, ihtiyacım olana benziyor. RemoveEldestEntry'yi, yalnızca ekleme siparişiyle değil, erişim emriyle gerçekleştirecek şekilde nasıl geçersiz kılarım? – bernie2436

+0

Hmm. Erişim emri ile ne demek istediğinizden emin değilsiniz. En büyük giriş, muhtemelen ilk eklenen anahtardır. – aioobe

İlgili konular