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

  • friendz.net

    friendz.net

    29 EKİM 2010
  • Jeb Corliss

    Jeb Corliss

    17 Kasım 2006
  • SVB International

    SVB Internat

    29 EKİM 2011