İçeriğe geç

Set (HashSet, LinkedHashSet, TreeSet)

Set arayüzü, Java Collections Framework içinde yer alır ve tekrarlanan (duplicate) elemanlara izin vermez.
Yani her eleman benzersiz (unique) olmalıdır.

📦 Paket: java.util.*


TürÖzellikSıralama
HashSetHızlı, sırasız, benzersiz elemanlarYok
LinkedHashSetEkleme sırasını korurEvet
TreeSetDoğal sıraya göre sıralar (alfabetik / sayısal)Evet

import java.util.HashSet;
HashSet<String> set = new HashSet<>();
set.add("Elma");
set.add("Armut");
set.add("Muz");
set.add("Elma"); // tekrar eklendi ama kabul edilmez
System.out.println(set); // [Armut, Elma, Muz]

💡 HashSet, sıralama garantisi vermez.


import java.util.LinkedHashSet;
LinkedHashSet<String> meyveler = new LinkedHashSet<>();
meyveler.add("Elma");
meyveler.add("Armut");
meyveler.add("Muz");
System.out.println(meyveler); // [Elma, Armut, Muz]

✅ Elemanlar eklenme sırasına göre saklanır.


import java.util.TreeSet;
TreeSet<String> meyveler = new TreeSet<>();
meyveler.add("Elma");
meyveler.add("Armut");
meyveler.add("Muz");
System.out.println(meyveler); // [Armut, Elma, Muz]

💡 TreeSet, elemanları alfabetik veya doğal sıralamaya göre düzenler.


MetotAçıklama
add()Eleman ekler
remove()Eleman siler
size()Eleman sayısını döner
contains()Eleman var mı kontrol eder
clear()Tüm elemanları siler
isEmpty()Set boş mu kontrol eder
HashSet<Integer> sayilar = new HashSet<>();
sayilar.add(10);
sayilar.add(20);
sayilar.add(30);
System.out.println(sayilar.contains(20)); // true
System.out.println("Boyut: " + sayilar.size());
sayilar.remove(10);
System.out.println(sayilar);

for (String meyve : set) {
System.out.println(meyve);
}

Veya lambda ifadesiyle (Java 8+):

set.forEach(System.out::println);

import java.util.HashSet;
HashSet<Integer> set1 = new HashSet<>();
set1.add(1); set1.add(2); set1.add(3);
HashSet<Integer> set2 = new HashSet<>();
set2.add(3); set2.add(4); set2.add(5);
HashSet<Integer> birlesim = new HashSet<>(set1);
birlesim.addAll(set2);
System.out.println("Birleşim: " + birlesim); // [1, 2, 3, 4, 5]
HashSet<Integer> kesisim = new HashSet<>(set1);
kesisim.retainAll(set2);
System.out.println("Kesişim: " + kesisim); // [3]
HashSet<Integer> fark = new HashSet<>(set1);
fark.removeAll(set2);
System.out.println("Fark: " + fark); // [1, 2]

TreeSet<Integer> sayilar = new TreeSet<>();
sayilar.add(50);
sayilar.add(10);
sayilar.add(30);
System.out.println(sayilar); // [10, 30, 50]
System.out.println("En küçük: " + sayilar.first());
System.out.println("En büyük: " + sayilar.last());

import java.util.*;
HashSet<String> set = new HashSet<>();
set.add("Java");
set.add("Python");
ArrayList<String> liste = new ArrayList<>(set);
System.out.println(liste);

TürÖzellikSıralamaTekrara İzinPerformans
HashSetHızlı, sırasız⚡ Çok hızlı
LinkedHashSetEkleme sırası korunur⚡ Orta
TreeSetDoğal sıralama⚡ Daha yavaş

💡 Not: Set yapıları genellikle benzersiz veri listeleri, etiket kümeleri, veya koleksiyon filtreleme işlemlerinde kullanılır.