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

  • Chip Johnson

    Chip Johnson

    30 AĞUSTOS 2007
  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008
  • Turkish Airlines

    Turkish Airl

    11 AĞUSTOS 2006