CodeBlanks Logo Icon CodeBlanks

HashSet

HashSet ile benzersiz eleman kümesini öğrenirsin.

Benzersiz küme: HashSet

Tekrarlı elemanları otomatik elemek istiyorsan HashSet kullanılır. Bir eleman eklenirken zaten varsa, ikinci kez eklenmez; küme değişmez.

HashSet<String> tags = new HashSet<>();
tags.add("java");
tags.add("java");
tags.add("code");
// [java, code]

Bir elemanın varlığını contains ile kontrol etmek çok hızlıdır; listedeki indexOf'tan çok daha hızlıdır. Küme sırası garanti etmez; sıra önemliyse LinkedHashSet tercih edilir.

Küme üzerinde döngü

Bir HashSet'i for-each döngüsü ile gezebilirsin. Elemanların çıkış sırası eklenme sırasıyla aynı olmayabilir; çünkü HashSet sıralama garantisi vermez.

for (String tag : tags) {
  System.out.println(tag);
}

İki kümenin kesişimini ya da birleşimini almak için retainAll ve addAll metotları kullanılır. Bunlar, küme işlemlerini tek satırda yapmanı sağlar.

Uygulama Eşsiz etiketleri topla

Bir HashSet<String> oluştur, içine "java", "code", "java", "maven" değerlerini ekle. Sonra kümenin size'ını yazdır.

Başlangıç kodu

Main.java
import java.util.HashSet;

public class Main {
  public static void main(String[] args) {
    // HashSet<String> oluştur
    // Dört etiketi add ile ekle (java iki kez)
    // size() ile eleman sayısını yazdır
  }
}

Örnek çözüm

Main.java
HashSet<String> tags = new HashSet<>();
tags.add("java");
tags.add("code");
tags.add("java");
tags.add("maven");
System.out.println(tags.size());

Beklenen çıktı

3

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Senaryo ve koleksiyon eşleştir

Kavram Anlamı
Sıralı, indeksli liste ArrayList
Anahtar-değer tablosu HashMap
Benzersiz eleman kümesi HashSet
Sıralı benzersiz küme LinkedHashSet

2 Boşluğu doldur: kümede var mı?

Soru
HashSet<String> tags = new HashSet<>();
tags.add("java");
boolean has = tags.____("java");
Cevap
HashSet<String> tags = new HashSet<>();
tags.add("java");
boolean has = tags.contains("java");

Açıklama: contains("java") true döner.

3 HashSet'e aynı elemanı iki kez add yaparsan ne olur?

  • İki kopya saklanır
  • İkinci add yok sayılır, küme değişmez Doğru cevap
  • Hata fırlatır
  • Eski eleman silinir, yenisi eklenir

Açıklama: Küme elemanları tekildir; ikinci ekleme yok sayılır.

Başlangıç bölümündeki tüm dersler