Java’da Set, HashSet ve TreeSet – Benzersiz Veri Koleksiyonlarını Yönetme

Java Collections Framework’ün önemli parçalarından biri olan Set arayüzü, benzersiz (unique) elemanları depolamak için kullanılır. Set’in en çok tercih edilen iki implementasyonu HashSet ve TreeSet’tir. Bu yazıda Set, HashSet ve TreeSet nedir, nasıl çalışır, farkları nelerdir, avantajları ve kullanım örnekleriyle detaylıca açıklıyoruz.


Set Nedir?

Set, tekrarlanan elemanları kabul etmeyen, benzersiz veri depolayan bir koleksiyon arayüzüdür. Sıralama garantisi vermez. Temel olarak matematikteki kümeye benzer.

Java’da Set arayüzünü implement eden birçok sınıf vardır, en popülerleri:

  • HashSet
  • TreeSet
  • LinkedHashSet (sıralamayı korur)

HashSet Nedir?

HashSet, verileri hash tabanlı bir yapıda depolar. Elemanlar benzersizdir ve sıralama garantisi yoktur. Performans olarak hızlıdır.

Özellikleri

  • Elemanların sıralaması rastgeledir, korunmaz.
  • Eleman ekleme, silme ve arama işlemleri ortalama O(1) zaman alır.
  • null eleman eklenebilir.
  • Thread-safe değildir.

TreeSet Nedir?

TreeSet, verileri kırmızı-siyah ağaç (Red-Black Tree) yapısı ile depolar. Bu nedenle elemanlar doğal sıralarına göre ya da verilen Comparator’a göre sıralı tutulur.

Özellikleri

  • Elemanlar sıralı tutulur (Comparable veya Comparator gerekir).
  • Eleman ekleme, silme ve arama işlemleri O(log n) zaman alır.
  • null eleman eklenemez.
  • Thread-safe değildir.

Kullanım Örnekleri

HashSet Örneği

import java.util.HashSet;

public class Ornek {
    public static void main(String[] args) {
        HashSet<String> meyveler = new HashSet<>();
        meyveler.add("Elma");
        meyveler.add("Muz");
        meyveler.add("Elma");  // Tekrar eklenmez

        System.out.println(meyveler);  // [Elma, Muz] (sıra değişken)
    }
}

TreeSet Örneği

import java.util.TreeSet;

public class Ornek {
    public static void main(String[] args) {
        TreeSet<String> sehirler = new TreeSet<>();
        sehirler.add("İstanbul");
        sehirler.add("Ankara");
        sehirler.add("İzmir");

        System.out.println(sehirler);  // [Ankara, İstanbul, İzmir] (alfabetik sıralı)
    }
}


HashSet ve TreeSet Karşılaştırması

ÖzellikHashSetTreeSet
Veri YapısıHash tablosuKırmızı-siyah ağaç
SıralamaYokVar (doğal sıralama)
PerformansOrtalama O(1)O(log n)
null Elemanİzinliİzinli değil
Kullanım AlanıHızlı benzersiz koleksiyonlarSıralı benzersiz koleksiyonlar

Ne Zaman Hangisini Kullanmalı?

  • HashSet: Hızlı erişim ve ekleme/silme gereken, sıralama önemsizse ideal.
  • TreeSet: Elemanların sıralı tutulması gerektiğinde, örneğin alfabetik listeleme veya sıralı arama yapılacaksa kullanılır.
guest
0 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments
0
YORUM YAPx