Јава ЛинкедХасхСет

У овом упутству ћемо научити о класи Јава ЛинкедХасхСет и њеним методама уз помоћ примера.

LinkedHashSetКласа у збирки оквира Јава даје функционалности како Хасхтабле и повезане структуре листа података.

Примењује интерфејс Сет.

Елементи од LinkedHashSetсе чувају у хеш табелама сличним ХасхСет-у.

Међутим, повезани хеш-скупови одржавају двоструко повезану листу изнутра за све своје елементе. Повезана листа дефинише редослед уласка елемената у хеш табеле.

Направите ЛинкедХасхСет

Да бисмо креирали повезани хеш сет, прво морамо да увозимо java.util.LinkedHashSetпакет.

Једном када увозимо пакет, ево како можемо да креирамо повезане хеш-скупове у Јави.

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

Овде смо креирали повезани хеш скуп са бројевима.

Обавештење, део new LinkedHashSet(8, 0.75). Овде је први параметар капацитет, а други параметар лоадФацтор .

  • капацитет - Капацитет овог хеш-скупа је 8. Значи, може да ускладишти 8 елемената.
  • лоадФацтор - Фактор оптерећења овог хеш-скупа је 0,6. То значи, кад год се наша хеш табела попуни за 60%, елементи се премештају у нову хеш табелу двоструке величине оригиналне хеш табеле.

Задани капацитет и фактор оптерећења

Могуће је створити повезани хеш скуп без дефинисања његовог капацитета и фактора оптерећења. На пример,

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

Подразумевано,

  • капацитет повезаног хеш-скупа биће 16
  • фактор оптерећења износиће 0,75

Креирање ЛинкедХасхСет-а из других колекција

Ево како можемо створити повезани хеш скуп који садржи све елементе других колекција.

 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); ) ) 

Оутпут

 АрраиЛист: (2, 4) ЛинкедХасхСет: (2, 4) 

Методе ЛинкедХасхСет-а

LinkedHashSetКласа даје методе које омогућавају да обављају различите операције на повезаном хеш скупа.

Уметните елементе у ЛинкедХасхСет

  • add() - убацује наведени елемент у повезани хеш скуп
  • addAll() - убацује све елементе наведене колекције у повезани хеш скуп

На пример,

 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); ) ) 

Оутпут

 ЛинкедХасхСет: (2, 4, 6) Нови ЛинкедХасхСет: (2, 4, 6, 5) 

Приступите елементима ЛинкедХасхСет

Да бисмо приступили елементима повезаног хеш-скупа, можемо користити iterator()методу. Да бисмо користили овај метод, морамо увозити java.util.Iteratorпакет. На пример,

 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(", "); ) ) ) 

Оутпут

 ЛинкедХасхСет: (2, 5, 6) ЛинкедХасхСет користећи Итератор: 2, 5, 6, 

Напомена :

  • hasNext()враћа се trueако у повезаном хеш-скупу постоји следећи елемент
  • next() враћа следећи елемент у повезаном хеш скупу

Уклоните елементе из ХасхСет-а

  • remove() - уклања наведени елемент из повезаног хеш-скупа
  • removeAll() - уклања све елементе из повезаног хеш-скупа

На пример,

 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); ) ) 

Оутпут

ЛинкедХасхСет: (2, 5, 6) Да ли је уклоњено 5? тачно Да ли су уклоњени сви елементи? истина

Сет Оператионс

Различите методе LinkedHashSetкласе такође се могу користити за извођење различитих задатих операција.

Унија комплета

Два изводе унију између два скупа, можемо користити addAll()методу. На пример,

 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); ) ) 

Оутпут

 ЛинкедХасхСет1: (2, 4) ЛинкедХасхСет2: (1, 3) Унија је: (1, 3, 2, 4) 

Пресек скупова

Да бисмо извршили пресек два скупа, можемо користити retainAll()методу. На пример

 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); ) ) 

Оутпут

 ЛинкедХасхСет1: (2, 3) ЛинкедХасхСет2: (2, 4) Пресек је: (2) 

Разлика скупова

Да бисмо израчунали разлику између два скупа, можемо користити removeAll()методу. На пример,

 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); ) ) 

Оутпут

 ЛинкедХасхСет1: (2, 3, 5) ЛинкедХасхСет2: (1, 3, 5) Разлика: (2) 

Подскуп

Да бисмо проверили да ли је скуп подскуп другог скупа или не, можемо користити containsAll()методу. На пример,

 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); ) ) 

Оутпут

ЛинкедХасхСет1: (1, 2, 3, 4) ЛинкедХасхСет2: (2, 3) Да ли је ЛинкедХасхСет2 подскуп ЛинкедХасхСет1? истина

Остале методе ЛинкедХасхСет-а

Метод Опис
clone() Ствара копију LinkedHashSet
contains() Претражује LinkedHashSetнаведени елемент и враћа логички резултат
isEmpty() Проверава да ли LinkedHashSetје празно
size() Враћа величину LinkedHashSet
clear() Уклања све елементе из 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:

  • TreeSetКласа имплементира SortedSetинтерфејс. Због тога се елементи у скупу стабала сортирају. Међутим, LinkedHashSetкласа одржава само редослед уметања својих елемената.
  • А TreeSetје обично спорији од а LinkedHashSet. То је зато што кад год се елемент дода у а TreeSet, он мора да изврши операцију сортирања.
  • LinkedHashSetомогућава уметање нулл вредности. Међутим, не можемо уметнути нулл вредност у TreeSet.

Занимљиви Чланци...