Java Collections Framework’ün önemli parçalarından olan HashMap ve TreeMap, anahtar-değer (key-value) çiftlerini depolamak için kullanılır. Her ikisi de Map
arayüzünü (interface) uygular ancak iç yapı ve sıralama özellikleri farklıdır.
Bu yazıda HashMap ve TreeMap’in ne olduğunu, nasıl çalıştığını, avantajlarını ve kullanım alanlarını örneklerle açıklayacağız.
HashMap Nedir?
HashMap
, verileri hash tabanlı bir yapı ile depolar. Anahtarların hash kodu hesaplanır ve buna göre veriler hızlıca erişilir.
Özellikleri
- Anahtarlar ve değerler
null
olabilir. (Anahtar için sadece 1 tanenull
izinlidir) - Eleman ekleme, silme ve arama işlemleri ortalama O(1) zaman alır.
- Sıralama garantisi yoktur; elemanlar rastgele sırada depolanır.
- Thread-safe değildir.
TreeMap Nedir?
TreeMap
, verileri kırmızı-siyah ağaç (Red-Black Tree) yapısı ile depolar. Bu nedenle, anahtarlar doğal sıralamalarına (Comparable) veya verilen Comparator’a göre sıralanır.
Özellikleri
- Anahtarlar
null
olamaz, ancak değerlernull
olabilir. - Eleman ekleme, silme ve arama işlemleri O(log n) zaman alır.
- Sıralı veri erişimi sağlar.
- Thread-safe değildir.
🧑💻 Kullanım Örnekleri
HashMap Örneği
import java.util.HashMap;
public class Ornek {
public static void main(String[] args) {
HashMap<String, Integer> yaslar = new HashMap<>();
yaslar.put("Ahmet", 25);
yaslar.put("Ayşe", 30);
yaslar.put("Mehmet", 22);
System.out.println(yaslar.get("Ayşe")); // 30
yaslar.remove("Mehmet");
System.out.println(yaslar); // {Ahmet=25, Ayşe=30}
}
}
TreeMap Örneği
import java.util.TreeMap;
public class Ornek {
public static void main(String[] args) {
TreeMap<String, Integer> yaslar = new TreeMap<>();
yaslar.put("Ahmet", 25);
yaslar.put("Ayşe", 30);
yaslar.put("Mehmet", 22);
System.out.println(yaslar.firstKey()); // Ahmet (alfabetik olarak ilk)
yaslar.remove("Mehmet");
System.out.println(yaslar); // {Ahmet=25, Ayşe=30}
}
}
HashMap ve TreeMap Karşılaştırması
Özellik | HashMap | TreeMap |
---|---|---|
İç Yapı | Hash tablosu | Kırmızı-siyah ağaç |
Ekleme/Arama/Silme | Ortalama O(1) | O(log n) |
Sıralama | Yok | Var (doğal sıralama) |
null Anahtar | 1 adet izinli | İzinli değil |
null Değer | İzinli | İzinli |
Performans | Daha hızlı | Daha yavaş ancak sıralı |
Kullanım Alanı | Hızlı erişim gereken durumlar | Sıralı veri gerektiren durumlar |
Ne Zaman Hangisini Kullanmalı?
- HashMap: Hız öncelikli ve sıralama gerekmeyen durumlarda tercih edin.
- TreeMap: Anahtarların sıralı tutulması gerektiğinde, örneğin alfabetik listeleme ya da aralık sorgularında kullanılır.