SORU
22 EYLÜL 2008, PAZARTESİ


En iyi uygulama yöntemi için hashCode

Nasıl bir koleksiyon için hashCode() Yöntem (Bu yöntem doğru kılınıp eşit varsayarak) en iyi uygulama üzerinde karar vereceğiz ?

CEVAP
22 EYLÜL 2008, PAZARTESİ


En iyi uygulama? Bu kullanım desen bağlıdır, çünkü zor bir soru.

Hemen hemen tüm durumlar için makul bir iyi uygulama yer almıyorduJosh Bloch< . em ^/'sEtkili JavaMadde 8. Daha iyi bir yaklaşım iyi neden yazar orada açıklıyor, çünkü oraya bakmak.

Kısa bir versiyonu

  1. int result oluşturun ve atayınsıfırdeğer.

  2. İçinher alanf equals() yöntemi, bir karma tarafından c kodu hesaplamak test:

    • Alan f boolean: 7**; . hesaplamak
    • Eğer alan f, *, short *char8 veya int: 12**; . hesaplamak
    • Eğer alan f long: 14**; . hesaplamak
    • Eğer alan f float: 16**; . hesaplamak
    • F double bir alan varsa: Double.doubleToLongBits(f) hesaplamak ve her uzun DEĞER gibi dönüş değeri kolu;
    • Alan f ise birnesne:*; *20. hashCode() yöntem veya 0 kullanımı sonucu
    • Alan f ise birdizi: ayrı unsur olarak her alanda görmek ve bir karma değerini hesaplamaközyinelemeli modave bir sonraki açıklandığı gibi değerleri bir arada.
  3. 21* *result ile: karma değeri birleştirir

    result = 37 * result   c
    
  4. result dönüş

Bu en kullanın durumlar için karma değerlerini doğru bir dağıtım neden.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AmeriiK_HD

    AmeriiK_HD

    16 AĞUSTOS 2012
  • Munchkin the Teddy Bear

    Munchkin the

    30 EYLÜL 2011
  • FF Radioo

    FF Radioo

    14 ŞUBAT 2007