Java nasıl çalışır

Konu seç, kod yaz ve içeride ne olduğunu adım adım gör.

Memory

Collection'lar

Concurrency

Dil ve JVM

Konular

TreeMap nasıl çalışır

Sıralı tree

HashMap sıra tutmaz, TreeMap ise key'leri her zaman sıralı tutar. Her Node için: solda küçükler, sağda büyükler.

Arama her adımda yarısını atar: O(log n). 1 milyon key için yaklaşık 20 karşılaştırma.

Solda get bas ve yola bak.

Red-black kuralları

Key'ler sırayla gelirse normal tree list'e döner ve O(n) olur. Red-black tree renklerle dengeyi korur.

Sağda üç kural canlı kontrol edilir. En uzun yolun en kısa yolun 2 katından uzun olmamasını sağlarlar.

Başka key'ler ekle: kurallar hiç bozulmaz.

Insert: recolor

Yeni Node kırmızı gelir, çünkü siyah sayısını değiştirmez. Ebeveyni de kırmızıysa düzeltme gerekir.

Amca da kırmızıysa en ucuz düzeltme renkleri değiştirmektir: ebeveyn ve amca siyah, dede kırmızı olur.

Solda 1 için put bas ve adımla.

Insert: rotation

Amca siyahsa renk yetmez. Rotation Node'ların yerini değiştirir, ama sırayı bozmaz.

Burada 10, 5 var. 1 için put bas: sağa rotation. Sonra Temizle bas, 10, 5, 7 yaz: önce sola, sonra sağa rotation.

Bir insert en fazla 2 rotation yapar.

Remove

İki child'ı olan Node doğrudan silinmez: yerine sıradaki key yazılır, eski Node silinir.

Silinen Node kırmızıysa kurallar bozulmaz. Siyahsa fixAfterDeletion rotation ve renkle dengeyi geri getirir.

Solda 30 için remove bas.

Navigasyon ve tuzaklar

Sıra sayesinde HashMap'in yapamadığı sorgular vardır: floorKey, ceilingKey, headMap, tailMap, firstKey.

null key olmaz, çünkü karşılaştırılması gerekir.

En gizli tuzak: TreeMap için aynılık compareTo == 0 demektir, equals değil. Uzunluğa göre Comparator ile "Leyla", "Aysel" value'sunu değiştirir.