У овом упутству ћемо научити о класи Јава ЛинкедХасхСет и њеним методама уз помоћ примера.
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 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
Класа имплементираSortedSet
интерфејс. Због тога се елементи у скупу стабала сортирају. Међутим,LinkedHashSet
класа одржава само редослед уметања својих елемената.- А
TreeSet
је обично спорији од аLinkedHashSet
. То је зато што кад год се елемент дода у аTreeSet
, он мора да изврши операцију сортирања. LinkedHashSet
омогућава уметање нулл вредности. Међутим, не можемо уметнути нулл вредност уTreeSet
.