Java HashSet

Bu eğitimde Java HashSet sınıfını öğreneceğiz. Örnekler yardımıyla farklı hash set yöntemlerini ve işlemlerini öğreneceğiz.

HashSetJava Koleksiyonları çerçevenin sınıf karma tablo veri yapısının işlevleri sağlar.

Set arayüzünü uygular.

HashSet oluşturma

Bir hash kümesi oluşturmak için önce java.util.HashSetpaketi içe aktarmalıyız .

Paketi içe aktardıktan sonra, Java'da hash setlerini nasıl oluşturabiliriz.

 // HashSet with 8 capacity and 0.75 load factor HashSet numbers = new HashSet(8, 0.75); 

Burada adlı bir hash seti oluşturduk numbers.

Dikkat edin, yeni bölüm HashSet(8, 0.75). Burada ilk parametre kapasite ve ikinci parametre loadFactor'dür .

  • kapasite - Bu hash setinin kapasitesi 8'dir. Yani, 8 element saklayabilir.
  • loadFactor - Bu hash setinin yük faktörü 0.6'dır . Bu, hash setimiz% 60 oranında doldurulduğunda, elemanların orijinal hash tablosunun iki katı boyutunda yeni bir hash tablosuna taşındığı anlamına gelir.

Varsayılan kapasite ve yük faktörü

Kapasitesini ve yük faktörünü tanımlamadan bir hash tablosu oluşturmak mümkündür. Örneğin,

 // HashSet with default capacity and load factor HashSet numbers1 = new HashSet(); 

Varsayılan olarak,

  • hash setinin kapasitesi 16 olacak
  • yük faktörü 0,75 olacaktır

HashSet Yöntemleri

HashSetSınıf bize sette çeşitli işlemleri gerçekleştirmek için izin çeşitli yöntemler sağlar.

HashSet'e Eleman Ekle

  • add() - belirtilen elemanı sete ekler
  • addAll() - belirtilen koleksiyonun tüm öğelerini sete ekler

Örneğin,

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet evenNumber = new HashSet(); // Using add() method evenNumber.add(2); evenNumber.add(4); evenNumber.add(6); System.out.println("HashSet: " + evenNumber); HashSet numbers = new HashSet(); // Using addAll() method numbers.addAll(evenNumber); numbers.add(5); System.out.println("New HashSet: " + numbers); ) ) 

Çıktı

 HashSet: (2, 4, 6) Yeni HashSet: (2, 4, 5, 6) 

HashSet Öğelerine Erişim

Bir hash setinin öğelerine erişmek için iterator()yöntemi kullanabiliriz . Bu yöntemi kullanmak için java.util.Iteratorpaketi içe aktarmalıyız . Örneğin,

 import java.util.HashSet; import java.util.Iterator; class Main ( public static void main(String() args) ( HashSet numbers = new HashSet(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("HashSet: " + numbers); // Calling iterator() method Iterator iterate = numbers.iterator(); System.out.print("HashSet using Iterator: "); // Accessing elements while(iterate.hasNext()) ( System.out.print(iterate.next()); System.out.print(", "); ) ) ) 

Çıktı

 HashSet: (2, 5, 6) Yineleyici kullanan HashSet: 2, 5, 6, 

Öğeleri Kaldır

  • remove() - belirtilen öğeyi kümeden kaldırır
  • removeAll() - setteki tüm öğeleri kaldırır

Örneğin,

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet numbers = new HashSet(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("HashSet: " + numbers); // Using remove() method boolean value1 = numbers.remove(5); System.out.println("Is 5 removed? " + value1); boolean value2 = numbers.removeAll(numbers); System.out.println("Are all elements removed? " + value2); ) ) 

Çıktı

HashSet: (2, 5, 6) 5 kaldırıldı mı? true Tüm öğeler kaldırıldı mı? doğru

İşlemleri Ayarla

HashSetSınıfın çeşitli yöntemleri, çeşitli set işlemlerini gerçekleştirmek için de kullanılabilir.

Setler Birliği

İki set arasındaki birleşimi gerçekleştirmek için addAll()yöntemi kullanabiliriz . Örneğin,

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet evenNumbers = new HashSet(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("HashSet1: " + evenNumbers); HashSet numbers = new HashSet(); numbers.add(1); numbers.add(3); System.out.println("HashSet2: " + numbers); // Union of two set numbers.addAll(evenNumbers); System.out.println("Union is: " + numbers); ) ) 

Çıktı

 HashSet1: (2, 4) HashSet2: (1, 3) Union is: (1, 2, 3, 4) 

Kümelerin Kesişimi

İki set arasındaki kesişimi gerçekleştirmek için retainAll()yöntemi kullanabiliriz . Örneğin

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet primeNumbers = new HashSet(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("HashSet1: " + primeNumbers); HashSet evenNumbers = new HashSet(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("HashSet2: " + evenNumbers); // Intersection of two sets evenNumbers.retainAll(primeNumbers); System.out.println("Intersection is: " + evenNumbers); ) ) 

Çıktı

 HashSet1: (2, 3) HashSet2: (2, 4) Kesişim: (2) 

Kümelerin Farkı

İki küme arasındaki farkı hesaplamak için removeAll()yöntemi kullanabiliriz . Örneğin,

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet primeNumbers = new HashSet(); primeNumbers.add(2); primeNumbers.add(3); primeNumbers.add(5); System.out.println("HashSet1: " + primeNumbers); HashSet oddNumbers = new HashSet(); oddNumbers.add(1); oddNumbers.add(3); oddNumbers.add(5); System.out.println("HashSet2: " + oddNumbers); // Difference between HashSet1 and HashSet2 primeNumbers.removeAll(oddNumbers); System.out.println("Difference : " + primeNumbers); ) ) 

Çıktı

 HashSet1: (2, 3, 5) HashSet2: (1, 3, 5) Fark: (2) 

Alt küme

Bir kümenin başka bir kümenin alt kümesi olup olmadığını kontrol etmek için containsAll()yöntemi kullanabiliriz . Örneğin,

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet numbers = new HashSet(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); System.out.println("HashSet1: " + numbers); HashSet primeNumbers = new HashSet(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("HashSet2: " + primeNumbers); // Check if primeNumbers is a subset of numbers boolean result = numbers.containsAll(primeNumbers); System.out.println("Is HashSet2 is subset of HashSet1? " + result); ) ) 

Çıktı

HashSet1: (1, 2, 3, 4) HashSet2: (2, 3) HashSet2, HashSet1'in bir alt kümesi mi? doğru

HashSet'in Diğer Yöntemleri

Yöntem Açıklama
clone() Bir kopyasını oluşturur HashSet
contains() HashSetBelirtilen öğeyi arar ve bir mantıksal sonuç döndürür
isEmpty() HashSetBoş olup olmadığını kontrol eder
size() Boyutunu verir HashSet
clear() Tüm öğeleri kaldırır HashSet

HashSet yöntemleri hakkında daha fazla bilgi edinmek için Java HashSet'i (resmi Java belgeleri) ziyaret edin.

Neden HashSet?

Java'da, HashSetöğelere rastgele erişmemiz gerektiğinde yaygın olarak kullanılır. Bunun nedeni, bir karma tablosundaki öğelere karma kodlar kullanılarak erişilmesidir.

Bir elemanın karma kodu, bir karma tablodaki elemanın tanımlanmasına yardımcı olan benzersiz bir kimliktir.

HashSetyinelenen öğeler içeremez. Bu nedenle, her bir hash set elemanının benzersiz bir hashcode'u vardır.

Not: HashSet senkronize edilmemiştir. Yani, birden fazla iş parçacığı, karma kümeye aynı anda erişirse ve evrelerden biri karma kümesini değiştirirse. Daha sonra harici olarak senkronize edilmelidir.

Ilginç makaleler...