Sobes.tech
Middle
181

Neden farklı nesnelerin hashCode() değerleri aynı olabilir?

AI'dan gelen yanıt

sobes.tech yapay zeka

Çünkü hash kodunun (int) olası değer aralığı, nesne içeriğinin olası değer aralığından çok daha küçüktür. Aslında, herhangi bir hash fonksiyonunun bu özelliği, giriş verilerini sabit veya daha küçük bir aralığa sıkıştırmaktır. Hash çakışmaları (farklı nesnelerin aynı hash koduna sahip olması) kaçınılmazdır.

Hash tabanlı koleksiyonların (örneğin, HashMap, HashSet) doğru çalışması için aşağıdaki kuralların uygulanması gerekir:

  1. Eğer Objects.equals(a, b), o zaman a.hashCode() == b.hashCode().
  2. Eğer !Objects.equals(a, b), o zaman a.hashCode() ile b.hashCode() aynı veya farklı olabilir.

Koleksiyonlar, öğeyi yerleştirmek veya aramak için potansiyel "kova"yı hızlıca belirlemek amacıyla hashCode() kullanır ve ardından bu kovada equals() kullanarak kesin bir kontrol yapar.