logo

Встановлено на Java

Набір інтерфейсу присутній у пакеті java.util і розширює його Інтерфейс колекції . Це невпорядкована колекція об’єктів, у якій не можна зберігати повторювані значення. Це інтерфейс, який реалізує математичний набір. Цей інтерфейс містить методи, успадковані від інтерфейсу Collection, і додає функцію, яка обмежує вставлення повторюваних елементів. Є два інтерфейси, які розширюють реалізацію набору, а саме SortedSet і NavigableSet.

На зображенні вище навігаційний набір розширює інтерфейс відсортованого набору. Оскільки набір не зберігає порядок вставки, навігаційний інтерфейс набору забезпечує реалізацію для навігації по набору. Клас, який реалізує навігаційний набір, є TreeSet, який є реалізацією самобалансуючого дерева. Тому цей інтерфейс надає нам спосіб навігації по цьому дереву.



Декларація: Інтерфейс Set оголошено як:

public interface Set extends Collection>

Створення об’єктів набору

Оскільки Set є інтерфейс , об’єкти не можуть бути створені з набіру. Нам завжди потрібен клас, який розширює цей список, щоб створити об’єкт. А також, після введення в Дженерики у Java 1.5 можна обмежити тип об’єкта, який можна зберігати в Set. Цей типобезпечний набір можна визначити як:

// Obj is the type of the object to be stored in Set Set set = new HashSet ();>

Давайте обговоримо методи, присутні в інтерфейсі Set, наведеному нижче, у форматі таблиці:

метод опис
додати (елемент) Цей метод використовується для додавання певного елемента до набору. Функція додає елемент, лише якщо вказаний елемент ще не присутній у наборі, інакше функція повертає False, якщо елемент уже присутній у наборі.
addAll(колекція) Цей метод використовується для додавання всіх елементів зі згаданої колекції до існуючого набору. Елементи додаються випадковим чином без дотримання певного порядку.
очистити() Цей метод використовується для видалення всіх елементів із набору, але не видалення набору. Посилання на набір все ще існує.
містить (елемент) Цей метод використовується для перевірки наявності певного елемента в наборі чи ні.
міститьВсе(колекція) Цей метод використовується для перевірки того, чи містить набір усі елементи, присутні в даній колекції, чи ні. Цей метод повертає true, якщо набір містить усі елементи, і повертає false, якщо будь-який з елементів відсутній.
hashCode() Цей метод використовується для отримання значення hashCode для цього екземпляра Set. Він повертає ціле значення, яке є значенням hashCode для цього екземпляра Set.
пусто() Цей метод використовується для перевірки порожнього набору чи ні.
ітератор() Цей метод використовується для повернення ітератор набору. Елементи з набору повертаються у випадковому порядку.
видалити (елемент) Цей метод використовується для видалення заданого елемента з набору. Цей метод повертає True, якщо вказаний елемент присутній у Set, інакше він повертає False.
removeAll(колекція) Цей метод використовується для видалення всіх елементів із колекції, які присутні в наборі. Цей метод повертає true, якщо цей набір змінився в результаті виклику.
retainAll(колекція) Цей метод використовується для збереження всіх елементів із набору, які згадуються в даній колекції. Цей метод повертає true, якщо цей набір змінився в результаті виклику.
розмір() Цей метод використовується для визначення розміру набору. Це повертає ціле число, яке означає кількість елементів.
toArray() Цей метод використовується для формування масиву з тих самих елементів, що й у Set.

Ілюстрація: Зразок програми для ілюстрації інтерфейсу набору

Java




// Java program Illustrating Set Interface> > // Importing utility classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> >// Demonstrating Set using HashSet> >// Declaring object of type String> >Set hash_Set =>new> HashSet();> > >// Adding elements to the Set> >// using add() method> >hash_Set.add(>'Geeks'>);> >hash_Set.add(>'For'>);> >hash_Set.add(>'Geeks'>);> >hash_Set.add(>'Example'>);> >hash_Set.add(>'Set'>);> > >// Printing elements of HashSet object> >System.out.println(hash_Set);> >}> }>

>

>

Вихід

[Set, Example, Geeks, For]>

Операції в інтерфейсі Set

Інтерфейс набору дозволяє користувачам виконувати основні математичні операції на наборі. Давайте візьмемо два масиви, щоб зрозуміти ці основні операції. Нехай набір1 = [1, 3, 2, 4, 8, 9, 0] і набір2 = [1, 3, 7, 5, 4, 0, 7, 5]. Тоді можливі операції над множинами:

1. Перетин: Ця операція повертає всі загальні елементи з заданих двох наборів. Для двох наведених вище наборів перетин буде:

java math.min
Intersection = [0, 1, 3, 4]>

2. Союз: Ця операція додає всі елементи одного набору до іншого. Для двох наведених вище наборів об’єднання буде таким:

Union = [0, 1, 2, 3, 4, 5, 7, 8, 9]>

3. Різниця: Ця операція видаляє всі значення, присутні в одному наборі, з іншого набору. Для двох наведених вище наборів різниця буде:

Difference = [2, 8, 9]>

Тепер давайте реалізуємо такі операції, як визначено вище:

приклад:

Java




// Java Program Demonstrating Operations on the Set> // such as Union, Intersection and Difference operations> > // Importing all utility classes> import> java.util.*;> > // Main class> public> class> SetExample {> > >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an object of Set class> >// Declaring object of Integer type> >Set a =>new> HashSet();> > >// Adding all elements to List> >a.addAll(Arrays.asList(> >new> Integer[] {>1>,>3>,>2>,>4>,>8>,>9>,>0> }));> > >// Again declaring object of Set class> >// with reference to HashSet> >Set b =>new> HashSet();> > >b.addAll(Arrays.asList(> >new> Integer[] {>1>,>3>,>7>,>5>,>4>,>0>,>7>,>5> }));> > > >// To find union> >Set union =>new> HashSet(a);> >union.addAll(b);> >System.out.print(>'Union of the two Set'>);> >System.out.println(union);> > >// To find intersection> >Set intersection =>new> HashSet(a);> >intersection.retainAll(b);> >System.out.print(>'Intersection of the two Set'>);> >System.out.println(intersection);> > >// To find the symmetric difference> >Set difference =>new> HashSet(a);> >difference.removeAll(b);> >System.out.print(>'Difference of the two Set'>);> >System.out.println(difference);> >}> }>

>

>

Вихід

Union of the two Set[0, 1, 2, 3, 4, 5, 7, 8, 9] Intersection of the two Set[0, 1, 3, 4] Difference of the two Set[2, 8, 9]>

Виконання різних операцій над SortedSet

Після введення Дженерики у Java 1.5 можна обмежити тип об’єкта, який можна зберігати в Set. Оскільки Set є інтерфейсом, його можна використовувати лише з класом, який реалізує цей інтерфейс. HashSet є одним із широко використовуваних класів, який реалізує інтерфейс Set. Тепер давайте подивимося, як виконувати кілька часто використовуваних операцій над HashSet. Ми будемо виконувати такі операції:

  1. Додавання елементів
  2. Доступ до елементів
  3. Видалення елементів
  4. Ітерація елементів
  5. Ітерація через Set

Тепер давайте обговоримо ці операції окремо:

Операції 1: Додавання елементів

Щоб додати елемент до набору, ми можемо використовувати метод add(). . Однак порядок вставки не зберігається в наборі. Внутрішньо для кожного елемента генерується хеш, а значення зберігаються відносно згенерованого хешу. значення порівнюються та сортуються в порядку зростання. Нам потрібно пам’ятати, що повторювані елементи заборонені, і всі повторювані елементи ігноруються. Крім того, набір приймає значення Null.

приклад

Java




// Java Program Demonstrating Working of Set by> // Adding elements using add() method> > // Importing all utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating an object of Set and> >// declaring object of type String> >Set hs =>new> HashSet();> > >// Adding elements to above object> >// using add() method> >hs.add(>'B'>);> >hs.add(>'B'>);> >hs.add(>'C'>);> >hs.add(>'A'>);> > >// Printing the elements inside the Set object> >System.out.println(hs);> >}> }>

>

>

Вихід

[A, B, C]>

Операція 2: Доступ до елементів

Після додавання елементів, якщо ми хочемо отримати доступ до елементів, ми можемо використовувати вбудовані методи, такі як contains() .

приклад

Java




// Java code to demonstrate Working of Set by> // Accessing the Elements of the Set object> > // Importing all utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating an object of Set and> >// declaring object of type String> >Set hs =>new> HashSet();> > >// Elements are added using add() method> >// Later onwards we will show accessing the same> > >// Custom input elements> >hs.add(>'A'>);> >hs.add(>'B'>);> >hs.add(>'C'>);> >hs.add(>'A'>);> > >// Print the Set object elements> >System.out.println(>'Set is '> + hs);> > >// Declaring a string> >String check =>'D'>;> > >// Check if the above string exists in> >// the SortedSet or not> >// using contains() method> >System.out.println(>'Contains '> + check +>' '> >+ hs.contains(check));> >}> }>

>

>

Вихід

Set is [A, B, C] Contains D false>

Операція 3: Видалення значень

Значення можна видалити з набору за допомогою методу remove().

приклад

Java




// Java Program Demonstrating Working of Set by> // Removing Element/s from the Set> > // Importing all utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> >// Declaring object of Set of type String> >Set hs =>new> HashSet();> > >// Elements are added> >// using add() method> > >// Custom input elements> >hs.add(>'A'>);> >hs.add(>'B'>);> >hs.add(>'C'>);> >hs.add(>'B'>);> >hs.add(>'D'>);> >hs.add(>'E'>);> > >// Printing initial Set elements> >System.out.println(>'Initial HashSet '> + hs);> > >// Removing custom element> >// using remove() method> >hs.remove(>'B'>);> > >// Printing Set elements after removing an element> >// and printing updated Set elements> >System.out.println(>'After removing element '> + hs);> >}> }>

>

>

Вихід

Initial HashSet [A, B, C, D, E] After removing element [A, C, D, E]>

Операція 4: Ітерація по набору

Існують різні способи проходження набору. Найвідомішим з них є використання розширеного циклу for.

приклад

Java




// Java Program to Demonstrate Working of Set by> // Iterating through the Elements> > // Importing utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating object of Set and declaring String type> >Set hs =>new> HashSet();> > >// Adding elements to Set> >// using add() method> > >// Custom input elements> >hs.add(>'A'>);> >hs.add(>'B'>);> >hs.add(>'C'>);> >hs.add(>'B'>);> >hs.add(>'D'>);> >hs.add(>'E'>);> > >// Iterating through the Set> >// via for-each loop> >for> (String value : hs)> > >// Printing all the values inside the object> >System.out.print(value +>', '>);> > >System.out.println();> >}> }>

>

>

Вихід

A, B, C, D, E,>

Класи, які реалізують інтерфейс Set у колекціях Java, можна легко побачити на зображенні нижче, і вони перераховані таким чином:

  • HashSet
  • EnumSet
  • LinkedHashSet
  • TreeSet

1 клас: HashSet

Клас HashSet, реалізований у рамка колекції є невід'ємною реалізацією приклад

Java




// Java program Demonstrating Creation of Set object> // Using the Hashset class> > // Importing utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating object of Set of type String> >Set h =>new> HashSet();> > >// Adding elements into the HashSet> >// using add() method> > >// Custom input elements> >h.add(>'India'>);> >h.add(>'Australia'>);> >h.add(>'South Africa'>);> > >// Adding the duplicate element> >h.add(>'India'>);> > >// Displaying the HashSet> >System.out.println(h);> > >// Removing items from HashSet> >// using remove() method> >h.remove(>'Australia'>);> >System.out.println(>'Set after removing '> >+>'Australia:'> + h);> > >// Iterating over hash set items> >System.out.println(>'Iterating over set:'>);> > >// Iterating through iterators> >Iterator i = h.iterator();> > >// It holds true till there is a single element> >// remaining in the object> >while> (i.hasNext())> > >System.out.println(i.next());> >}> }>

>

>

Вихід

[South Africa, Australia, India] Set after removing Australia:[South Africa, India] Iterating over set: South Africa India>

2 клас: EnumSet

Клас EnumSet, реалізований у рамка колекції є однією зі спеціалізованих реалізацій інтерфейсу Set для використання з тип перерахування . Це високопродуктивна реалізація набору, набагато швидша за HashSet. Усі елементи в наборі enum повинні походити від одного типу перерахування, який вказується під час створення набору явно чи неявно. Давайте подивимося, як створити набір об’єктів за допомогою цього класу.

приклад

Java




// Java program to demonstrate the> // creation of the set object> // using the EnumSet class> import> java.util.*;> > enum> Gfg { CODE, LEARN, CONTRIBUTE, QUIZ, MCQ }> ;> > public> class> GFG {> > >public> static> void> main(String[] args)> >{> >// Creating a set> >Set set1;> > >// Adding the elements> >set1 = EnumSet.of(Gfg.QUIZ, Gfg.CONTRIBUTE,> >Gfg.LEARN, Gfg.CODE);> > >System.out.println(>'Set 1: '> + set1);> >}> }>

>

>

Вихід

Set 1: [CODE, LEARN, CONTRIBUTE, QUIZ]>

3 клас: LinkedHashSet

Клас LinkedHashSet, який реалізовано в рамка колекції це впорядкована версія HashSet, яка підтримує подвійний зв’язаний список для всіх елементів. Коли необхідно підтримувати порядок ітерацій, використовується цей клас. Під час ітерації через HashSet порядок непередбачуваний, тоді як LinkedHashSet дозволяє нам ітерувати елементи в тому порядку, в якому вони були вставлені. Давайте подивимося, як створити набір об’єктів за допомогою цього класу.

приклад

Java




// Java program to demonstrate the> // creation of Set object using> // the LinkedHashset class> import> java.util.*;> > class> GFG {> > >public> static> void> main(String[] args)> >{> >Set lh =>new> LinkedHashSet();> > >// Adding elements into the LinkedHashSet> >// using add()> >lh.add(>'India'>);> >lh.add(>'Australia'>);> >lh.add(>'South Africa'>);> > >// Adding the duplicate> >// element> >lh.add(>'India'>);> > >// Displaying the LinkedHashSet> >System.out.println(lh);> > >// Removing items from LinkedHashSet> >// using remove()> >lh.remove(>'Australia'>);> >System.out.println(>'Set after removing '> >+>'Australia:'> + lh);> > >// Iterating over linked hash set items> >System.out.println(>'Iterating over set:'>);> >Iterator i = lh.iterator();> >while> (i.hasNext())> >System.out.println(i.next());> >}> }>

>

>

Вихід

[India, Australia, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa>

4 клас: TreeSet

Клас TreeSet, реалізований у рамка колекції і реалізація інтерфейсу SortedSet і SortedSet розширює інтерфейс набору. Він поводиться як простий набір, за винятком того, що зберігає елементи у відсортованому форматі. TreeSet використовує структуру даних дерева для зберігання. Об'єкти зберігаються в порядку зростання. Але ми можемо виконувати ітерацію в порядку спадання за допомогою методу TreeSet.descendingIterator(). Давайте подивимося, як створити набір об’єктів за допомогою цього класу.

приклад

Java




// Java Program Demonstrating Creation of Set object> // Using the TreeSet class> > // Importing utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating a Set object and declaring it of String> >// type> >// with reference to TreeSet> >Set ts =>new> TreeSet();> > >// Adding elements into the TreeSet> >// using add()> >ts.add(>'India'>);> >ts.add(>'Australia'>);> >ts.add(>'South Africa'>);> > >// Adding the duplicate> >// element> >ts.add(>'India'>);> > >// Displaying the TreeSet> >System.out.println(ts);> > >// Removing items from TreeSet> >// using remove()> >ts.remove(>'Australia'>);> >System.out.println(>'Set after removing '> >+>'Australia:'> + ts);> > >// Iterating over Tree set items> >System.out.println(>'Iterating over set:'>);> >Iterator i = ts.iterator();> > >while> (i.hasNext())> >System.out.println(i.next());> >}> }>

>

>

Вихід

[Australia, India, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa>