Articles

Java HashMap internals: necə işləyir?

HashMap-in hashing, bucket, collision və resize mexanizmlərini müsahibə və real iş səviyyəsində başa düş.

8 dəq. oxu 4 sentyabr 2026

Hashing və bucket məntiqi

HashMap açarı birbaşa massiv indeksi kimi istifadə etmir. Əvvəl hashCode nəticəsini əlavə qarışdırma əməliyyatından keçirir, sonra həmin nəticəni bucket indeksinə çevirir.

Yaxşı paylanmış hash dəyərləri elementlərin müxtəlif bucket-lərə düşməsinə kömək edir. Buna görə düzgün equals və hashCode implementasiyası həm düzgünlük, həm də performans üçün vacibdir.

Collision baş verəndə nə olur?

Fərqli açarlar eyni bucket-ə düşə bilər. Java həmin elementləri əvvəl əlaqəli siyahı kimi saxlayır; bucket həddən artıq böyüdükdə və cədvəl kifayət qədər böyük olduqda struktur ağaca çevrilə bilər.

  • equals nəticəsi açarların həqiqətən eyni olub-olmadığını müəyyən edir.
  • Pis hash paylanması axtarış müddətini artırır.
  • Mutable açarı map-ə əlavə etdikdən sonra dəyişmək təhlükəli nəticələr yaradır.

Load factor və resize

Element sayı capacity və load factor əsasında hesablanan həddi keçdikdə HashMap daha böyük cədvəl yaradır və mövcud elementləri yeni bucket-lərə yerləşdirir. Standart load factor yaddaş istifadəsi ilə axtarış performansı arasında praktik balans yaradır.

Real sistemdə ilkin ölçünü düzgün seçmək tez-tez baş verən resize əməliyyatlarını azalda bilər, amma ehtiyacdan çox böyük capacity də boş yaddaş sərf edir.

Daha çox backend materialı

Digər məqalə, cheat sheet və qeydlərə bax.

Bütün resurslar