Java LinkedHashSet

Bu eğiticide, örnekler yardımıyla Java LinkedHashSet sınıfı ve yöntemleri hakkında bilgi edineceğiz.

LinkedHashSetJava koleksiyonları çerçeve sınıf Hashtable ve bağlantılı liste veri yapısı hem de işlevleri sağlar.

Set arayüzünü uygular.

Öğeleri LinkedHashSetHashSet'e benzer hash tablolarında saklanır.

Bununla birlikte, bağlantılı karma kümeler, tüm öğeleri için dahili olarak çift bağlantılı bir liste tutar. Bağlantılı liste, öğelerin karma tablolara eklendiği sırayı tanımlar.

LinkedHashSet oluşturun

Bağlı bir hash kümesi oluşturmak için önce java.util.LinkedHashSetpaketi içe aktarmalıyız .

Paketi içe aktardıktan sonra, Java'da bağlantılı hash setlerini nasıl oluşturabileceğimizi burada bulabilirsiniz.

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

Burada, numaralar adlı bağlantılı bir hash kümesi oluşturduk.

Dikkat edin, parça new LinkedHashSet(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 tablomuz her% 60 dolduğunda, elemanların orijinal karma tablonun iki katı boyutunda yeni bir karma tabloya taşındığı anlamına gelir.

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

Kapasite ve yük faktörünü tanımlamadan bağlantılı bir hash kümesi oluşturmak mümkündür. Örneğin,

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

Varsayılan olarak,

  • bağlantılı hash setinin kapasitesi 16 olacaktır
  • yük faktörü 0,75 olacaktır

Diğer Koleksiyonlardan LinkedHashSet Oluşturma

Diğer koleksiyonların tüm öğelerini içeren bağlantılı bir hash setini nasıl oluşturabileceğimiz aşağıda açıklanmıştır.

 import java.util.LinkedHashSet; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an arrayList of even numbers ArrayList evenNumbers = new ArrayList(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("ArrayList: " + evenNumbers); // Creating a LinkedHashSet from an ArrayList LinkedHashSet numbers = new LinkedHashSet(evenNumbers); System.out.println("LinkedHashSet: " + numbers); ) ) 

Çıktı

 ArrayList: (2, 4) LinkedHashSet: (2, 4) 

LinkedHashSet Yöntemleri

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

LinkedHashSet'e Eleman Ekle

  • add() - belirtilen öğeyi bağlantılı hash setine ekler
  • addAll() - belirtilen koleksiyonun tüm öğelerini bağlantılı hash setine ekler

Örneğin,

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

Çıktı

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

LinkedHashSet Öğelerine Erişim

Bağlı 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.LinkedHashSet; import java.util.Iterator; class Main ( public static void main(String() args) ( LinkedHashSet numbers = new LinkedHashSet(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("LinkedHashSet: " + numbers); // Calling the iterator() method Iterator iterate = numbers.iterator(); System.out.print("LinkedHashSet using Iterator: "); // Accessing elements while(iterate.hasNext()) ( System.out.print(iterate.next()); System.out.print(", "); ) ) ) 

Çıktı

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

Not :

  • hasNext()truebağlantılı karma kümede bir sonraki öğe varsa döner
  • next() bağlantılı karma kümedeki sonraki öğeyi döndürür

HashSet'ten Elemanları Kaldır

  • remove() - belirtilen öğeyi bağlantılı hash kümesinden kaldırır
  • removeAll() - bağlantılı hash kümesindeki tüm öğeleri kaldırır

Örneğin,

 import java.util.LinkedHashSet; class Main ( public static void main(String() args) ( LinkedHashSet numbers = new LinkedHashSet(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("LinkedHashSet: " + numbers); // Using the 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ı

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

İşlemleri Ayarla

LinkedHashSetSı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 iki gerçekleştirir, addAll()yöntemi kullanabiliriz . Örneğin,

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

Çıktı

 LinkedHashSet1: (2, 4) LinkedHashSet2: (1, 3) Union is: (1, 3, 2, 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.LinkedHashSet; class Main ( public static void main(String() args) ( LinkedHashSet primeNumbers = new LinkedHashSet(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("LinkedHashSet1: " + primeNumbers); LinkedHashSet evenNumbers = new LinkedHashSet(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("LinkedHashSet2: " + evenNumbers); // Intersection of two sets evenNumbers.retainAll(primeNumbers); System.out.println("Intersection is: " + evenNumbers); ) ) 

Çıktı

 LinkedHashSet1: (2, 3) LinkedHashSet2: (2, 4) Kesişme: (2) 

Kümelerin Farkı

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

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

Çıktı

 LinkedHashSet1: (2, 3, 5) LinkedHashSet2: (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.LinkedHashSet; class Main ( public static void main(String() args) ( LinkedHashSet numbers = new LinkedHashSet(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); System.out.println("LinkedHashSet1: " + numbers); LinkedHashSet primeNumbers = new LinkedHashSet(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("LinkedHashSet2: " + primeNumbers); // Check if primeNumbers is a subset of numbers boolean result = numbers.containsAll(primeNumbers); System.out.println("Is LinkedHashSet2 is subset of LinkedHashSet1? " + result); ) ) 

Çıktı

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

LinkedHashSet'in Diğer Yöntemleri

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

To learn more about LinkedHashSet methods, visit Java LinkedHashSet (official Java documentation).

LinkedHashSet Vs. HashSet

Both LinkedHashSet and HashSet implements the Set interface. However, there exist some differences between them.

  • LinkedHashSet maintains a linked list internally. Due to this, it maintains the insertion order of its elements.
  • The LinkedHashSet class requires more storage than HashSet. This is because LinkedHashSet maintains linked lists internally.
  • The performance of LinkedHashSet is slower than HashSet. It is because of linked lists present in LinkedHashSet.

LinkedHashSet Vs. TreeSet

Here are the major differences between LinkedHashSet and TreeSet:

  • TreeSetSınıf uygulayan SortedSetbir arayüz. Bu nedenle bir ağaç kümesindeki öğeler sıralanır. Bununla birlikte, LinkedHashSetsınıf yalnızca öğelerinin ekleme sırasını korur.
  • A TreeSetgenellikle a'dan daha yavaştır LinkedHashSet. Bunun nedeni, a'ya bir öğe eklendiğinde TreeSet, sıralama işlemini gerçekleştirmesi gerektiğidir.
  • LinkedHashSetboş değerlerin eklenmesine izin verir. Ancak, null değer ekleyemiyoruz TreeSet.

Ilginç makaleler...