this blog entry'a göre, HashMap zaten alınmış olan bir hashcode'a ait hashCode()
(hash()
adı verilen) kendi uygulamasını yeniden uygulamaktadır. Daha sonra anahtar boş değilse key.hashCode() HashValue döndükten sonra, hat 4HashMap'in hash() ishCode() adında kendi iç uygulaması nasıl ve nasıl oluyor?
, bu, yukarıda belirtilen yöntemle, yani key.hashCode() hat: 4, temel nesne üzerinde hashfunction arayacak
int hash = karma (HashValue)
ve şimdi, kendi karma işlevi içine HashValue döndü uygular.
Neden hash değerini (hashValue) kullanarak tekrar hesapladığımızı merak edebiliriz. Cevap, kötü kalite karma> işlevlerine karşı savunur.
doğru yeniden atamakta hashcodes hashmap miyim? HashMap nesneleri saklayabilir, ancak bir hashCode nesnesini atayan mantığa erişemez. Örneğin, hash()
muhtemelen aşağıdaki hashCode()
uygulanması arkasındaki mantığı entegre edemedi:
public class Employee {
protected long employeeId;
protected String firstName;
protected String lastName;
public int hashCode(){
return (int) employeeId;
}
}
Olası kopyalar [anlama garip Java hash fonksiyonu] (http://stackoverflow.com/questions/9335169/understanding-strange-java-hash-function) – Nayuki
karma 'uygulanmasını Tahmin @NayukiMinase()' 1.8.0_51 sürümü farklı/daha basit olduğundan (cevabıma bakın) zamanla değişti. – Andreas