Јава ХасхСет

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

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

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

Креирање ХасхСет-а

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

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

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

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

Напомена, део нови HashSet(8, 0.75). Овде је први параметар капацитет , а други параметар лоадФацтор .

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

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

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

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

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

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

Методе ХасхСет-а

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

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

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

На пример,

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

Оутпут

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

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

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

 import java.util.HashSet; import java.util.Iterator; class Main ( public static void main(String() args) ( HashSet numbers = new HashSet(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("HashSet: " + numbers); // Calling iterator() method Iterator iterate = numbers.iterator(); System.out.print("HashSet using Iterator: "); // Accessing elements while(iterate.hasNext()) ( System.out.print(iterate.next()); System.out.print(", "); ) ) ) 

Оутпут

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

Уклоните елементе

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

На пример,

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet numbers = new HashSet(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("HashSet: " + numbers); // Using 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? тачно Да ли су уклоњени сви елементи? истина

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

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

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

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

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

Оутпут

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

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

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

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet primeNumbers = new HashSet(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("HashSet1: " + primeNumbers); HashSet evenNumbers = new HashSet(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("HashSet2: " + 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.HashSet; class Main ( public static void main(String() args) ( HashSet primeNumbers = new HashSet(); primeNumbers.add(2); primeNumbers.add(3); primeNumbers.add(5); System.out.println("HashSet1: " + primeNumbers); HashSet oddNumbers = new HashSet(); oddNumbers.add(1); oddNumbers.add(3); oddNumbers.add(5); System.out.println("HashSet2: " + oddNumbers); // Difference between HashSet1 and HashSet2 primeNumbers.removeAll(oddNumbers); System.out.println("Difference : " + primeNumbers); ) ) 

Оутпут

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

Подскуп

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

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet numbers = new HashSet(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); System.out.println("HashSet1: " + numbers); HashSet primeNumbers = new HashSet(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("HashSet2: " + primeNumbers); // Check if primeNumbers is a subset of numbers boolean result = numbers.containsAll(primeNumbers); System.out.println("Is HashSet2 is subset of HashSet1? " + result); ) ) 

Оутпут

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

Остале методе ХасхСет-а

Метод Опис
clone() Ствара копију HashSet
contains() Претражује HashSetнаведени елемент и враћа логички резултат
isEmpty() Проверава да ли HashSetје празно
size() Враћа величину HashSet
clear() Уклања све елементе из HashSet

Да бисте сазнали више о методама ХасхСет, посетите Јава ХасхСет (званична Јава документација).

Зашто ХасхСет?

У Јави HashSetсе обично користи ако елементима морамо да приступамо насумично. То је зато што се елементима у хеш табели приступа помоћу хеш кодова.

Хасхцоде елемента је јединствени идентитет који помаже у идентификацији елемента у хасх таблици.

HashSetне може садржати дупликате елемената. Дакле, сваки елемент хасх скупа има јединствени хасхцоде.

Напомена: ХасхСет није синхронизован. То је ако више нити истовремено приступа хеш скупу и једна од нити модификује хеш скуп. Тада се мора синхронизовати споља.

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