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

  • Amir Parmar

    Amir Parmar

    25 Kasım 2010
  • bunliu

    bunliu

    2 Mayıs 2007
  • InsideBlackBerry

    InsideBlackB

    14 Aralık 2009