Java HashSet sınıfı, depolama için bir karma tablo kullanan bir koleksiyon oluşturmak için kullanılır. AbstractSet class miras alır ve Set interface uygular.

Java HashSet sınıfı ile ilgili önemli noktalar şunlardır:
- HashSet, öğeleri hashing adı verilen bir mekanizma kullanarak depolar.
- HashSet yalnızca benzersiz öğeler içerir.
- HashSet boş değere izin verir.
- HashSet sınıfı senkronize değil.
- HashSet, ekleme sırasını korumaz. Burada, elemanlar hashcode’larına göre eklenir.
- HashSet, arama işlemleri için en iyi yaklaşımdır.
- HashSet‘in ilk varsayılan kapasitesi 16’dır ve yük faktörü 0,75’tir.
List ve Set arasındaki Fark
Bir List yinelenen öğeler içerebilirken, Set yalnızca benzersiz öğeler içerir.
HashSet sınıfının hiyerarşisi
HashSet sınıfı, Set arabirimini uygulayan AbstractSet sınıfını genişletir. Set arayüzü, hiyerarşik sırada Collection ve Iterable arayüzleri devralır.
HashSet sınıf bildirimi
Java.util.HashSet sınıfının bildirimini görelim.
1 2 3 | public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable |
Java HashSet sınıf kurucuları
Kurucu | Tanımı |
HashSet() | Varsayılan bir HashSet oluşturmak için kullanılır. |
HashSet(int capacity) | Verilen tamsayı değer kapasitesine ayarlanmış hash setinin kapasitesini başlatmak için kullanılır. HashSet’e öğeler eklendikçe kapasite otomatik olarak artar. |
HashSet(int capacity, float loadFactor) | Verilen tamsayı değer kapasitesine ve belirtilen yük faktörüne ayarlanan hash setinin kapasitesini başlatmak için kullanılır. |
HashSet(Collection<? extends E> c) | c koleksiyonun elemanlarını kullanarak hash setini başlatmak için kullanılır. |
Java HashSet sınıfının Metodları
Java HashSet sınıfının çeşitli metotlar aşağıdaki gibidir.
Metot | Tanımı |
add(E e) | Zaten mevcut değilse, belirtilen elemanı bu sete eklemek için kullanılır. |
clear() | Setten tüm unsurları çıkarmak için kullanılır. |
clone() | Bu HashSet örneğinin basit bir kopyasını döndürmek için kullanılır: öğelerin kendileri klonlanmaz. |
contains(Object o) | Bu set, belirtilen öğeyi içeriyorsa, true değerini döndürmek için kullanılır. |
isEmpty() | Bu set hiç eleman içermiyorsa, true değerini döndürmek için kullanılır. |
iterator() | Bu kümedeki öğeler üzerinde bir yineleyici döndürmek için kullanılır. |
remove(Object o) | Varsa belirtilen elemanı bu setten çıkarmak için kullanılır. |
size() | Setteki elemanların sayısını döndürmek için kullanılır. |
spliterator() | Setteki elemanlar üzerinde geç bağlanan ve başarısız hızlı Spliterator oluşturmak için kullanılır. |
Java HashSet Örnekleri
Örnek 1: HashSet’in basit bir örneğini görelim. Unutmayın, öğeler sırasız bir koleksiyonda yinelenir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import java.util.*; class Main { public static void main(String[] args) { HashSet<String> set=new HashSet(); set.add("Bir"); set.add("İki"); set.add("Üç"); set.add("Dört"); set.add("Beş"); Iterator<String> i=set.iterator(); while(i.hasNext()) { System.out.println(i.next()); } } } |
Çıktı:
1 2 3 4 5 6 7 | Dört Bir İki Üç Beş |
Örnek 2: Bu örnekte, HashSet’in yinelenen öğelere izin vermediğini görüyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import java.util.*; class Main { public static void main(String[] args) { HashSet<String> set=new HashSet(); set.add("Bir"); set.add("İki"); set.add("Üç"); set.add("Dört"); set.add("İki"); Iterator<String> i=set.iterator(); while(i.hasNext()) { System.out.println(i.next()); } } } |
Çıktı:
1 2 3 4 5 6 | Dört Bir İki Üç |
Örnek 3: Java HashSet sınıfının clear() yöntemi, bu kümeden tüm öğeleri kaldırmak için kullanılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import java.util.*; class Main { public static void main(String[] args) { HashSet<String> set=new HashSet(); set.add("Bir"); set.add("İki"); set.add("Üç"); set.add("Dört"); System.out.println("Elementler: "+ set); set.clear(); System.out.println("Elementler: "+ set); } } |
Çıktı:
1 2 3 4 | Elementler: [Dört, Bir, İki, Üç] Elementler: [] |
Örnek 4: Java HashSet sınıfının clone() yöntemi, belirtilen HashSet’in basit bir kopyasını döndürmek için kullanılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import java.util.*; class Main { public static void main(String[] args) { HashSet<String> set=new HashSet(); set.add("Bir"); set.add("İki"); set.add("Üç"); set.add("Dört"); System.out.println("Elementler: "+ set); HashSet<String> cloneSet = new HashSet<String>(); System.out.println("Klon Elementler: "+ set); } } |
Çıktı:
1 2 3 4 | Elementler: [Dört, Bir, İki, Üç] Klon Elementler: [Dört, Bir, İki, Üç] |
Örnek 5: Java HashSet sınıfının contains() yöntemi, bu HashSet’in belirtilen öğeyi içerip içermediğini kontrol etmek için kullanılır. Aksi takdirde eleman bulunursa true, false döndürür.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import java.util.*; class Main { public static void main(String[] args) { HashSet<String> set=new HashSet(); set.add("Bir"); set.add("İki"); set.add("Üç"); set.add("Dört"); System.out.println("Elementler: "+ set); System.out.println("Dört var mı "+set.contains("Dört")); System.out.println("Beş var mı "+set.contains("Beş")); } } |
Çıktı:
1 2 3 4 5 | Elementler: [Dört, Bir, İki, Üç] Dört var mı true Beş var mı false |
Örnek 6: Java HashSet sınıfının isEmpty() yöntemi, HashSet’in bir öğe içerip içermediğini kontrol etmek için kullanılır. Küme öğe içeriyorsa true, aksi takdirde false döndürür.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import java.util.*; class Main { public static void main(String[] args) { HashSet<String> hset=new HashSet(); hset.add("Bir"); hset.add("İki"); hset.add("Üç"); hset.add("Dört"); System.out.println("Elementler: "+ hset); System.out.println("Boş mu "+hset.isEmpty()); hset.clear(); System.out.println("Boş mu "+hset.isEmpty()); } } |
Çıktı:
1 2 3 4 5 | Elementler: [Dört, Bir, İki, Üç] Boş mu false Boş mu true |
Örnek 7: Java HashSet sınıfının iterator() yöntemi, HashSet ile aynı öğelerin bir yineleyicisini döndürmek için kullanılır. HashSet’te mevcut olandan rastgele sırayla öğeleri döndürür.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import java.util.*; class Main { public static void main(String[] args) { HashSet<String> hset=new HashSet(); hset.add("Bir"); hset.add("İki"); hset.add("Üç"); hset.add("Dört"); Iterator<String> itr=hset.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } |
Çıktı:
1 2 3 4 5 6 | Dört Bir İki Üç |
Örnek 8: remove(), varsa, belirtilen öğeyi bu kümeden kaldıran Java HashSet sınıfının bir yöntemidir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import java.util.*; class Main { public static void main(String[] args) { HashSet<String> hset=new HashSet(); hset.add("Bir"); hset.add("İki"); hset.add("Üç"); hset.add("Dört"); hset.remove("Üç"); System.out.println("Elementler : " + hset); } } |
Çıktı:
1 2 3 | Elementler : [Dört, Bir, İki] |
Örnek 9 : Java HashSet sınıfının size() yöntemi, bu HashSet’teki öğelerin sayısını almak için kullanılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import java.util.*; class Main { public static void main(String[] args) { HashSet<String> hset=new HashSet(); hset.add("Bir"); hset.add("İki"); hset.add("Üç"); hset.add("Dört"); System.out.println("Elementler : " + hset); System.out.println("Boyutu: " + hset.size()); } } |
Çıktı:
1 2 3 4 | Elementler : [Dört, Bir, İki, Üç] Boyutu: 4 |
Örnek 10: Java HashSet sınıfının spliterator() yöntemi, bu kümedeki öğeler üzerinde geç bağlanan ve başarısız hızlı Spliterator oluşturmak için kullanılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import java.util.*; class Main { public static void main(String[] args) { HashSet<String> hset=new HashSet(); hset.add("Bir"); hset.add("İki"); hset.add("Üç"); hset.add("Dört"); Spliterator<String> namesSpliterator = hset.spliterator(); namesSpliterator.forEachRemaining(System.out::println); } } |
Çıktı:
1 2 3 4 5 6 | Dört Bir İki Üç |
İçerik için teşekkürler