Den indstillede grænseflade er til stede i java.util-pakken og udvider Samling grænseflade . Det er en uordnet samling af objekter, hvor duplikerede værdier ikke kan gemmes. Det er en grænseflade, der implementerer det matematiske sæt. Denne grænseflade indeholder metoderne, der er arvet fra samlingsgrænsefladen, og tilføjer en funktion, der begrænser indsættelsen af de duplikerede elementer. Der er to grænseflader, der udvider sættets implementering, nemlig SortedSet og NavigableSet.

På ovenstående billede udvider det navigerbare sæt grænsefladen til det sorterede sæt. Da et sæt ikke beholder indsættelsesrækkefølgen, giver den navigerbare sæt-grænseflade implementeringen til at navigere gennem sættet. Klassen som implementerer det navigerbare sæt er et TreeSet som er en implementering af et selvbalancerende træ. Derfor giver denne grænseflade os en måde at navigere gennem dette træ på.
Erklæring: Set-grænsefladen erklæres som:
public interface Set extends Collection>
Oprettelse af sætobjekter
Da Set er en interface , kan objekter ikke oprettes af typesættet. Vi har altid brug for en klasse, der udvider denne liste for at kunne oprette et objekt. Og også efter introduktionen af Generiske lægemidler i Java 1.5 er det muligt at begrænse den type objekt, der kan gemmes i sættet. Dette typesikre sæt kan defineres som:
// Obj is the type of the object to be stored in Set Set set = new HashSet ();>
Lad os diskutere metoder, der findes i Set-grænsefladen, der er angivet nedenfor i et tabelformat nedenfor som følger:
| Metode | Beskrivelse |
|---|---|
| tilføje(element) | Denne metode bruges til at tilføje et bestemt element til sættet. Funktionen tilføjer kun elementet, hvis det angivne element ikke allerede er til stede i sættet, ellers returnerer funktionen False, hvis elementet allerede er til stede i sættet. |
| addAll (samling) | Denne metode bruges til at tilføje alle elementerne fra den nævnte samling til det eksisterende sæt. Elementerne tilføjes tilfældigt uden at følge nogen specifik rækkefølge. |
| klar() | Denne metode bruges til at fjerne alle elementer fra sættet, men ikke til at slette sættet. Referencen til sættet eksisterer stadig. |
| indeholder (element) | Denne metode bruges til at kontrollere, om et specifikt element er til stede i sættet eller ej. |
| indeholder alle (samling) | Denne metode bruges til at kontrollere, om sættet indeholder alle de elementer, der er til stede i den givne samling eller ej. Denne metode returnerer sand, hvis sættet indeholder alle elementerne, og returnerer falsk, hvis nogen af elementerne mangler. |
| hashCode() | Denne metode bruges til at få hashCode-værdien for denne forekomst af sættet. Det returnerer en heltalsværdi, som er hashCode-værdien for denne forekomst af sættet. |
| er tom() | Denne metode bruges til at kontrollere, om sættet er tomt eller ej. |
| iterator() | Denne metode bruges til at returnere iterator af sættet. Elementerne fra sættet returneres i en tilfældig rækkefølge. |
| fjerne (element) | Denne metode bruges til at fjerne det givne element fra sættet. Denne metode returnerer True, hvis det angivne element er til stede i sættet, ellers returnerer den False. |
| removeAll (samling) | Denne metode bruges til at fjerne alle de elementer fra samlingen, som er til stede i sættet. Denne metode returnerer sand, hvis dette sæt ændres som følge af opkaldet. |
| retainAll (samling) | Denne metode bruges til at bevare alle de elementer fra sættet, som er nævnt i den givne samling. Denne metode returnerer sand, hvis dette sæt ændres som følge af opkaldet. |
| størrelse() | Denne metode bruges til at få størrelsen på sættet. Dette returnerer en heltalsværdi, som angiver antallet af elementer. |
| toArray() | Denne metode bruges til at danne en række af de samme elementer som sættet. |
Illustration: Eksempel på program til at illustrere sæt-grænsefladen
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);> >}> }> |
>
>Produktion
[Set, Example, Geeks, For]>
Operationer på sætgrænsefladen
Sættets interface giver brugerne mulighed for at udføre den grundlæggende matematiske operation på sættet. Lad os tage to arrays for at forstå disse grundlæggende operationer. Lad sæt1 = [1, 3, 2, 4, 8, 9, 0] og sæt2 = [1, 3, 7, 5, 4, 0, 7, 5]. Så er de mulige operationer på sættene:
1. Kryds: Denne operation returnerer alle de fælles elementer fra de givne to sæt. For de ovennævnte to sæt ville skæringspunktet være:
Intersection = [0, 1, 3, 4]>
2. Union: Denne operation tilføjer alle elementerne i det ene sæt med det andet. For de to ovennævnte sæt vil fagforeningen være:
Union = [0, 1, 2, 3, 4, 5, 7, 8, 9]>
3. Forskel: Denne handling fjerner alle værdierne i det ene sæt fra det andet sæt. For de to ovenstående sæt vil forskellen være:
Difference = [2, 8, 9]>
Lad os nu implementere følgende operationer som defineret ovenfor som følger:
Eksempel:
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);> >}> }> |
>
>Produktion
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]>
Udførelse af forskellige operationer på SortedSet
Efter introduktionen af Generiske lægemidler i Java 1.5 er det muligt at begrænse den type objekt, der kan gemmes i sættet. Da Set er en grænseflade, kan den kun bruges med en klasse, der implementerer denne grænseflade. HashSet er en af de meget brugte klasser, som implementerer Set-grænsefladen. Lad os nu se, hvordan du udfører et par ofte brugte operationer på HashSet. Vi vil udføre følgende operationer som følger:
- Tilføjelse af elementer
- Adgang til elementer
- Fjernelse af elementer
- Itererende elementer
- Iteration gennem sæt
Lad os nu diskutere disse operationer individuelt som følger:
Operation 1: Tilføjelse af elementer
For at tilføje et element til sættet kan vi bruge add() metode . Indsættelsesrækkefølgen bibeholdes dog ikke i sættet. Internt genereres en hash for hvert element, og værdierne gemmes i forhold til den genererede hash. værdierne sammenlignes og sorteres i stigende rækkefølge. Vi skal huske på, at duplikerede elementer ikke er tilladt, og at alle duplikerede elementer ignoreres. Og også nul-værdier accepteres af sættet.
Eksempel
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);> >}> }> |
>
>Produktion
[A, B, C]>
Operation 2: Adgang til elementerne
Efter tilføjelse af elementerne, hvis vi ønsker at få adgang til elementerne, kan vi bruge indbyggede metoder som contains() .
Eksempel
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));> >}> }> |
snor i c
>
>Produktion
Set is [A, B, C] Contains D false>
Operation 3: Fjernelse af værdierne
Værdierne kan fjernes fra sættet ved at bruge metoden remove() .
Eksempel
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);> >}> }> |
>
>Produktion
Initial HashSet [A, B, C, D, E] After removing element [A, C, D, E]>
Operation 4: Iteration gennem sættet
Der er forskellige måder at iterere gennem sættet. Den mest berømte er at bruge den forbedrede for loop.
Eksempel
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();> >}> }> |
>
>Produktion
A, B, C, D, E,>
Klasser, der implementerer Set-grænsefladen i Java Collections, kan let opfattes fra billedet nedenfor som følger og er angivet som følger:
- HashSet
- EnumSet
- LinkedHashSet
- Træsæt
Klasse 1: HashSet
HashSet-klassen, som er implementeret i indsamlingsramme er en iboende implementering af Eksempel
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());> >}> }> |
>
>Produktion
[South Africa, Australia, India] Set after removing Australia:[South Africa, India] Iterating over set: South Africa India>
Klasse 2: EnumSet
EnumSet-klassen, som er implementeret i samlingsramme er en af de specialiserede implementeringer af Set-grænsefladen til brug med opregningstype . Det er en højtydende sætimplementering, meget hurtigere end HashSet. Alle elementerne i et enum-sæt skal komme fra en enkelt opregningstype, der er angivet, når sættet oprettes enten eksplicit eller implicit. Lad os se, hvordan du opretter et sæt objekt ved hjælp af denne klasse.
Eksempel
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);> >}> }> |
>
>Produktion
Set 1: [CODE, LEARN, CONTRIBUTE, QUIZ]>
Klasse 3: LinkedHashSet
LinkedHashSet klasse som er implementeret i samlingsramme er en ordnet version af HashSet, der opretholder en dobbelt-linket liste på tværs af alle elementer. Når iterationsrækkefølgen skal vedligeholdes, bruges denne klasse. Ved iteration gennem et HashSet er rækkefølgen uforudsigelig, mens et LinkedHashSet lader os iterere gennem elementerne i den rækkefølge, de blev indsat i. Lad os se, hvordan du opretter et sæt objekt ved hjælp af denne klasse.
Eksempel
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());> >}> }> |
>
>Produktion
[India, Australia, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa>
Klasse 4: Træsæt
TreeSet-klassen, som er implementeret i samlingsramme og implementering af SortedSet Interface og SortedSet udvider Set Interface. Det opfører sig som et simpelt sæt med den undtagelse, at det gemmer elementer i et sorteret format. TreeSet bruger en trædatastruktur til opbevaring. Objekter gemmes i sorteret, stigende rækkefølge. Men vi kan iterere i faldende rækkefølge ved hjælp af metoden TreeSet.descendingIterator(). Lad os se, hvordan du opretter et sæt objekt ved hjælp af denne klasse.
Eksempel
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());> >}> }> |
>
>Produktion
[Australia, India, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa>