Bu eğiticide, örnekler yardımıyla Java LinkedHashSet sınıfı ve yöntemleri hakkında bilgi edineceğiz.
LinkedHashSet
Java 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 LinkedHashSet
HashSet'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.LinkedHashSet
paketi 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
LinkedHashSet
Sı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 ekleraddAll()
- 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.Iterator
paketi 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()
true
bağlantılı karma kümede bir sonraki öğe varsa dönernext()
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ırremoveAll()
- 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
LinkedHashSet
Sı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() | LinkedHashSet Belirtilen öğeyi arar ve bir mantıksal sonuç döndürür |
isEmpty() | LinkedHashSet Boş 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 thanHashSet
. This is becauseLinkedHashSet
maintains linked lists internally. - The performance of
LinkedHashSet
is slower thanHashSet
. It is because of linked lists present inLinkedHashSet
.
LinkedHashSet Vs. TreeSet
Here are the major differences between LinkedHashSet
and TreeSet
:
TreeSet
Sınıf uygulayanSortedSet
bir arayüz. Bu nedenle bir ağaç kümesindeki öğeler sıralanır. Bununla birlikte,LinkedHashSet
sınıf yalnızca öğelerinin ekleme sırasını korur.- A
TreeSet
genellikle a'dan daha yavaştırLinkedHashSet
. Bunun nedeni, a'ya bir öğe eklendiğindeTreeSet
, sıralama işlemini gerçekleştirmesi gerektiğidir. LinkedHashSet
boş değerlerin eklenmesine izin verir. Ancak, null değer ekleyemiyoruzTreeSet
.