Interfața setată este prezentă în pachetul java.util și extinde Interfață de colecție . Este o colecție neordonată de obiecte în care valorile duplicate nu pot fi stocate. Este o interfață care implementează mulțimea matematică. Această interfață conține metodele moștenite din interfața Collection și adaugă o caracteristică care restricționează inserarea elementelor duplicate. Există două interfețe care extind implementarea setului și anume SortedSet și NavigableSet.

În imaginea de mai sus, setul navigabil extinde interfața setului sortat. Deoarece un set nu păstrează ordinea de inserare, interfața setului navigabil oferă implementarea pentru a naviga prin set. Clasa care implementează setul navigabil este un TreeSet care este o implementare a unui arbore de auto-echilibrare. Prin urmare, această interfață ne oferă o modalitate de a naviga prin acest arbore.
Declaraţie: Interfața Set este declarată ca:
public interface Set extends Collection>
Crearea obiectelor set
lungimea matricei java
Deoarece Set este un interfață , obiectele nu pot fi create de tipar. Avem întotdeauna nevoie de o clasă care extinde această listă pentru a crea un obiect. Și, de asemenea, după introducerea lui generice în Java 1.5, este posibil să se restricționeze tipul de obiect care poate fi stocat în set. Acest set de tip sigur poate fi definit ca:
// Obj is the type of the object to be stored in Set Set set = new HashSet ();>
Să discutăm metodele prezente în interfața Set furnizată mai jos într-un format tabelar, după cum urmează:
| Metodă | Descriere |
|---|---|
| adauga (element) | Această metodă este folosită pentru a adăuga un anumit element la set. Funcția adaugă elementul numai dacă elementul specificat nu este deja prezent în set, altfel funcția returnează False dacă elementul este deja prezent în set. |
| addAll(colecție) | Această metodă este folosită pentru a adăuga toate elementele din colecția menționată la setul existent. Elementele sunt adăugate aleatoriu fără a urma vreo ordine specifică. |
| clar() | Această metodă este folosită pentru a elimina toate elementele din set, dar nu pentru a șterge setul. Referința pentru set încă există. |
| conţine(element) | Această metodă este folosită pentru a verifica dacă un anumit element este prezent sau nu în set. |
| conţineAll(colecţie) | Această metodă este folosită pentru a verifica dacă setul conține sau nu toate elementele prezente în colecția dată. Această metodă returnează true dacă setul conține toate elementele și returnează false dacă lipsește vreunul dintre elemente. |
| hashCode() | Această metodă este utilizată pentru a obține valoarea hashCode pentru această instanță a setului. Returnează o valoare întreagă care este valoarea hashCode pentru această instanță a setului. |
| este gol() | Această metodă este folosită pentru a verifica dacă setul este gol sau nu. |
| iterator() | Această metodă este folosită pentru a returna iterator a setului. Elementele din set sunt returnate într-o ordine aleatorie. |
| elimina (element) | Această metodă este folosită pentru a elimina elementul dat din set. Această metodă returnează True dacă elementul specificat este prezent în Set, altfel returnează False. |
| removeAll(colecție) | Această metodă este folosită pentru a elimina toate elementele din colecție care sunt prezente în set. Această metodă returnează true dacă acest set s-a modificat ca urmare a apelului. |
| retainAll (colecție) | Această metodă este folosită pentru a reține toate elementele din mulțime care sunt menționate în colecția dată. Această metodă returnează true dacă acest set s-a modificat ca urmare a apelului. |
| mărimea() | Această metodă este folosită pentru a obține dimensiunea setului. Aceasta returnează o valoare întreagă care indică numărul de elemente. |
| toArray() | Această metodă este folosită pentru a forma o matrice din aceleași elemente ca și cea a setului. |
Ilustrare: Exemplu de program pentru a ilustra interfața 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);> >}> }> |
>
>Ieșire
[Set, Example, Geeks, For]>
Operații pe interfața Set
Interfața setului permite utilizatorilor să efectueze operația matematică de bază pe platou. Să luăm două matrice pentru a înțelege aceste operațiuni de bază. Fie set1 = [1, 3, 2, 4, 8, 9, 0] și set2 = [1, 3, 7, 5, 4, 0, 7, 5]. Apoi operațiunile posibile pe platouri sunt:
1. Intersecție: Această operație returnează toate elementele comune din cele două seturi date. Pentru cele două mulțimi de mai sus, intersecția ar fi:
Intersection = [0, 1, 3, 4]>
2. Unire: Această operație adaugă toate elementele dintr-un set cu celălalt. Pentru cele două seturi de mai sus, uniunea ar fi:
Union = [0, 1, 2, 3, 4, 5, 7, 8, 9]>
3. Diferența: Această operație elimină toate valorile prezente într-un set din celălalt set. Pentru cele două seturi de mai sus, diferența ar fi:
Difference = [2, 8, 9]>
Acum haideți să implementăm următoarele operațiuni așa cum sunt definite mai sus, după cum urmează:
Exemplu:
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);> >}> }> |
>
>Ieșire
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]>
Efectuarea diferitelor operații pe SortedSet
După introducerea lui generice în Java 1.5, este posibil să se restricționeze tipul de obiect care poate fi stocat în set. Deoarece Set este o interfață, poate fi folosit doar cu o clasă care implementează această interfață. HashSet este una dintre clasele utilizate pe scară largă care implementează interfața Set. Acum, să vedem cum să efectuați câteva operații utilizate frecvent pe HashSet. Vom efectua următoarele operații după cum urmează:
python de căutare binară
- Adăugarea de elemente
- Accesarea elementelor
- Îndepărtarea elementelor
- Elemente iteratoare
- Repetând prin Set
Acum haideți să discutăm aceste operațiuni individual, după cum urmează:
Operațiuni 1: Adăugarea de elemente
Pentru a adăuga un element la set, putem folosi metoda add(). . Cu toate acestea, ordinea de inserare nu este reținută în set. Intern, pentru fiecare element, este generat un hash și valorile sunt stocate în raport cu hash-ul generat. valorile sunt comparate și sortate în ordine crescătoare. Trebuie să reținem că elementele duplicate nu sunt permise și toate elementele duplicate sunt ignorate. Și, de asemenea, valorile nule sunt acceptate de set.
Exemplu
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);> >}> }> |
>
>Ieșire
[A, B, C]>
Operațiunea 2: Accesarea Elementelor
După adăugarea elementelor, dacă dorim să accesăm elementele, putem folosi metode încorporate precum contains() .
Exemplu
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));> >}> }> |
>
>Ieșire
Set is [A, B, C] Contains D false>
Operațiunea 3: Eliminarea Valorilor
Valorile pot fi eliminate din set folosind metoda remove() .
Exemplu
Java
dfs vs bfs
// 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);> >}> }> |
>
>Ieșire
Initial HashSet [A, B, C, D, E] After removing element [A, C, D, E]>
Operațiunea 4: Repetând prin set
Există diferite moduri de a relua setul. Cel mai faimos este folosirea buclei for îmbunătățite.
Exemplu
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 treia formă normalăIeșire
A, B, C, D, E,>
Clasele care implementează interfața Set în colecțiile Java pot fi ușor percepute din imaginea de mai jos, după cum urmează și sunt enumerate după cum urmează:
- HashSet
- EnumSet
- LinkedHashSet
- TreeSet
Clasa 1: HashSet
Clasa HashSet care este implementată în cadru de colectare este o implementare inerentă a Exemplu
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());> >}> }> |
>
>Ieșire
[South Africa, Australia, India] Set after removing Australia:[South Africa, India] Iterating over set: South Africa India>
Clasa 2: EnumSet
Clasa EnumSet care este implementată în cadrul colecțiilor este una dintre implementările specializate ale interfeței Set pentru utilizare cu tip de enumerare . Este o implementare de set de înaltă performanță, mult mai rapidă decât HashSet. Toate elementele dintr-un set de enumerare trebuie să provină dintr-un singur tip de enumerare care este specificat atunci când setul este creat fie explicit, fie implicit. Să vedem cum să creăm un obiect set folosind această clasă.
Exemplu
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);> >}> }> |
>
>Ieșire
Set 1: [CODE, LEARN, CONTRIBUTE, QUIZ]>
Clasa 3: LinkedHashSet
Clasa LinkedHashSet care este implementată în cadrul colecțiilor este o versiune ordonată a HashSet care menține o listă dublu legată pentru toate elementele. Când este necesară menținerea ordinii de iterație, se folosește această clasă. Atunci când iterăm printr-un HashSet, ordinea este imprevizibilă, în timp ce un LinkedHashSet ne permite să iterăm elementele în ordinea în care au fost inserate. Să vedem cum să creăm un obiect set folosind această clasă.
Exemplu
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());> >}> }> |
>
>Ieșire
[India, Australia, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa>
Clasa 4: TreeSet
Clasa TreeSet care este implementată în cadrul colecțiilor și implementarea SortedSet Interface și SortedSet extinde Set Interface. Se comportă ca un set simplu, cu excepția faptului că stochează elemente într-un format sortat. TreeSet utilizează o structură de date arborescentă pentru stocare. Obiectele sunt stocate în ordine sortată, crescătoare. Dar putem itera în ordine descrescătoare folosind metoda TreeSet.descendingIterator(). Să vedem cum să creăm un obiect set folosind această clasă.
Exemplu
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());> >}> }> |
siruri de sortare java
>
>Ieșire
[Australia, India, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa>