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

  • ChannelRichard

    ChannelRicha

    7 Kasım 2008
  • ChasesAndCrashes

    ChasesAndCra

    31 Temmuz 2009
  • FILIPeeeK

    FILIPeeeK

    22 Mayıs 2006