У овом упутству ћемо научити о класи Јава ЛинкедХасхСет и њеним методама уз помоћ примера.
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.
LinkedHashSetmaintains a linked list internally. Due to this, it maintains the insertion order of its elements.- The
LinkedHashSetclass requires more storage thanHashSet. This is becauseLinkedHashSetmaintains linked lists internally. - The performance of
LinkedHashSetis slower thanHashSet. It is because of linked lists present inLinkedHashSet.
LinkedHashSet Vs. TreeSet
Here are the major differences between LinkedHashSet and TreeSet:
TreeSetКласа имплементираSortedSetинтерфејс. Због тога се елементи у скупу стабала сортирају. Међутим,LinkedHashSetкласа одржава само редослед уметања својих елемената.- А
TreeSetје обично спорији од аLinkedHashSet. То је зато што кад год се елемент дода у аTreeSet, он мора да изврши операцију сортирања. LinkedHashSetомогућава уметање нулл вредности. Међутим, не можемо уметнути нулл вредност уTreeSet.








