SORU
27 HAZİRAN 2011, PAZARTESİ


Nasıl bir Java HashMap aynı karma kodu ile farklı nesneleri ele?

Benim anladığım başı olarak düşünüyorum

  1. Aynı hashcode için iki nesne onun için tamamen yasal.
  2. İki nesne eşit (eşit kullanarak ) sonra aynı hashcode var.
  3. Eğer iki nesne eşit olması durumunda onlar da aynı hashcode

Doğru muyum?

Şimdi ben doğru, soru şu var: HashMap dahili nesne hashcode kullanır. Eğer iki nesne aynı hashcode varsa, nasıl kullandığı HashMap takip edebilir?

Biri içten nesnenin hashcode nasıl kullandığını açıklayabilir mi?

CEVAP
27 HAZİRAN 2011, PAZARTESİ


Hashmap böyle çalışır (bu biraz basitleştirilmiş, ama temel mekanizma göstermektedir)

"Kova" olan anahtar değer çiftleri depolamak için kullanır. bir numarası vardır Her bir bölüm benzersiz bir numarası vardır - o kova tanımlar. Ne zaman sen koymak bir anahtar-değer çifti içine map, hashmap vermez de karma kod anahtarı ve deposu çift kova olan tanımlayıcısıdır karma kod anahtarı. Örneğin: 235 - ^ anahtar hash kodu . çift kova sayısı 235 saklanır. (Bir kova daha sonra bir anahtar-değer çifti saklayabilirsiniz unutmayın).

Bu hashmap bir değer, bir anahtar vererek arama yaparken, ilk verdiğiniz anahtarı karma kodu bakacağız. Bu hashmap ilgili kovaya bakar, ve sonra equals() ile karşılaştırarak kova tüm çiftleri tuşları ile verdiğiniz anahtarı karşılaştırın.

Şimdi sen, bu çok verimli baktım anahtar-değer çiftleri bir harita: karma kod anahtarı hashmap hemen bilir hangi kova bak, o sadece test karşı nedir bu kova.

Yukarıdaki mekanizma bakıyor, aynı zamanda gereksinimleri anahtarları hashCode() equals() yöntemleri hakkında gerekli görebilirsiniz:

  • Eğer iki anahtar aynı (equals() mukayese true döner), hashCode() yöntem aynı sayıda iade etmelidir. Eğer bu ihlal anahtarları, anahtarları eşit saklanabilir farklı kovalar ve hashmap olmaz saptar anahtar-değer çiftleri (çünkü gidiyorsun bak aynı kova).

  • Eğer iki anahtar farklı, eğer hash kodları aynı ya da değil fark etmez. Eğer hash kodları aynı ise aynı kova içinde saklı olacak ve bu durumda, hashmap equals() onları ayırt etmek için kullanır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • André Frizzo

    André Frizz

    16 Aralık 2006
  • Christopher Bill

    Christopher

    30 NİSAN 2009
  • MaximumPCMag

    MaximumPCMag

    23 Temmuz 2010