Sett-grensesnittet er til stede i java.util-pakken og utvider Samlingsgrensesnitt . Det er en uordnet samling av objekter der dupliserte verdier ikke kan lagres. Det er et grensesnitt som implementerer det matematiske settet. Dette grensesnittet inneholder metodene som er arvet fra samlingsgrensesnittet og legger til en funksjon som begrenser innsetting av dupliserte elementer. Det er to grensesnitt som utvider settimplementeringen, nemlig SortedSet og NavigableSet.

I bildet ovenfor utvider det navigerbare settet grensesnittet for sorterte sett. Siden et sett ikke beholder innsettingsrekkefølgen, gir det navigerbare settgrensesnittet implementeringen for å navigere gjennom settet. Klassen som implementerer det navigerbare settet er et TreeSet som er en implementering av et selvbalanserende tre. Derfor gir dette grensesnittet oss en måte å navigere gjennom dette treet.
Erklæring: Set-grensesnittet er erklært som:
public interface Set extends Collection>
Opprette settobjekter
Siden Set er en grensesnitt , objekter kan ikke opprettes av typesettet. Vi trenger alltid en klasse som utvider denne listen for å lage et objekt. Og også, etter introduksjonen av Generiske legemidler i Java 1.5 er det mulig å begrense typen objekt som kan lagres i settet. Dette typesikre settet kan defineres som:
// Obj is the type of the object to be stored in Set Set set = new HashSet ();>
La oss diskutere metoder som finnes i Set-grensesnittet nedenfor i et tabellformat nedenfor som følger:
| Metode | Beskrivelse |
|---|---|
| add(element) | Denne metoden brukes til å legge til et spesifikt element til settet. Funksjonen legger til elementet bare hvis det angitte elementet ikke allerede er til stede i settet, ellers returnerer funksjonen False hvis elementet allerede er til stede i settet. |
| addAll (samling) | Denne metoden brukes til å legge til alle elementene fra den nevnte samlingen til det eksisterende settet. Elementene legges til tilfeldig uten å følge noen bestemt rekkefølge. |
| klar() | Denne metoden brukes til å fjerne alle elementene fra settet, men ikke slette settet. Referansen for settet eksisterer fortsatt. |
| inneholder(element) | Denne metoden brukes til å sjekke om et spesifikt element er til stede i settet eller ikke. |
| inneholder alle (samling) | Denne metoden brukes til å sjekke om settet inneholder alle elementene som finnes i den gitte samlingen eller ikke. Denne metoden returnerer true hvis settet inneholder alle elementene og returnerer false hvis noen av elementene mangler. |
| hashkode() | Denne metoden brukes til å få hashCode-verdien for denne forekomsten av settet. Den returnerer en heltallsverdi som er hashCode-verdien for denne forekomsten av settet. |
| er tom() | Denne metoden brukes til å sjekke om settet er tomt eller ikke. |
| iterator() | Denne metoden brukes til å returnere iterator av settet. Elementene fra settet returneres i tilfeldig rekkefølge. |
| fjerne (element) | Denne metoden brukes til å fjerne det gitte elementet fra settet. Denne metoden returnerer True hvis det spesifiserte elementet er tilstede i settet, ellers returnerer den False. |
| removeAll (samling) | Denne metoden brukes til å fjerne alle elementene fra samlingen som finnes i settet. Denne metoden returnerer sann hvis dette settet endres som et resultat av anropet. |
| retainAll (samling) | Denne metoden brukes til å beholde alle elementene fra settet som er nevnt i den gitte samlingen. Denne metoden returnerer sann hvis dette settet endres som et resultat av anropet. |
| størrelse() | Denne metoden brukes for å få størrelsen på settet. Dette returnerer en heltallsverdi som angir antall elementer. |
| toArray() | Denne metoden brukes til å danne en rekke av de samme elementene som settet. |
Illustrasjon: Eksempelprogram for å illustrere settgrensesnitt
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);> >}> }> |
>
>Produksjon
[Set, Example, Geeks, For]>
Operasjoner på settgrensesnittet
Sett-grensesnittet lar brukerne utføre den grunnleggende matematiske operasjonen på settet. La oss ta to matriser for å forstå disse grunnleggende operasjonene. La sett1 = [1, 3, 2, 4, 8, 9, 0] og sett2 = [1, 3, 7, 5, 4, 0, 7, 5]. Da er de mulige operasjonene på settene:
1. Kryss: Denne operasjonen returnerer alle felleselementene fra de gitte to settene. For de to ovennevnte settene vil skjæringspunktet være:
Intersection = [0, 1, 3, 4]>
2. Union: Denne operasjonen legger til alle elementene i ett sett med det andre. For de to ovennevnte settene vil fagforeningen være:
Union = [0, 1, 2, 3, 4, 5, 7, 8, 9]>
3. Forskjell: Denne operasjonen fjerner alle verdiene som finnes i ett sett fra det andre settet. For de to ovennevnte settene vil forskjellen være:
Difference = [2, 8, 9]>
La oss nå implementere følgende operasjoner som definert 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);> >}> }> |
>
>Produksjon
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]>
Utføre forskjellige operasjoner på SortedSet
Etter introduksjonen av Generiske legemidler i Java 1.5 er det mulig å begrense typen objekt som kan lagres i settet. Siden Set er et grensesnitt, kan det bare brukes med en klasse som implementerer dette grensesnittet. HashSet er en av de mye brukte klassene som implementerer Set-grensesnittet. La oss nå se hvordan du utfører noen få ofte brukte operasjoner på HashSet. Vi skal utføre følgende operasjoner som følger:
- Legge til elementer
- Tilgang til elementer
- Fjerning av elementer
- Itererende elementer
- Itererer gjennom sett
La oss nå diskutere disse operasjonene individuelt som følger:
Operasjoner 1: Legge til elementer
For å legge til et element til settet, kan vi bruke add() metode . Innsettingsrekkefølgen beholdes imidlertid ikke i settet. Internt, for hvert element, genereres en hash og verdiene lagres i forhold til den genererte hashen. verdiene sammenlignes og sorteres i stigende rekkefølge. Vi må huske på at dupliserte elementer ikke er tillatt og alle dupliserte elementer ignoreres. Og null-verdier aksepteres av settet.
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);> >}> }> |
>
>Produksjon
[A, B, C]>
Operasjon 2: Få tilgang til elementene
Etter å ha lagt til elementene, hvis vi ønsker å få tilgang til elementene, kan vi bruke innebygde 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));> >}> }> |
streng i c
>
>Produksjon
Set is [A, B, C] Contains D false>
Operasjon 3: Fjerning av verdier
Verdiene kan fjernes fra settet ved å bruke remove()-metoden .
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);> >}> }> |
>
>Produksjon
Initial HashSet [A, B, C, D, E] After removing element [A, C, D, E]>
Operasjon 4: Itererer gjennom settet
Det er forskjellige måter å iterere gjennom settet. Den mest kjente er å bruke 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();> >}> }> |
>
>Produksjon
A, B, C, D, E,>
Klasser som implementerer Set-grensesnittet i Java Collections kan lett oppfattes fra bildet nedenfor som følger og er oppført som følger:
- HashSet
- EnumSet
- LinkedHashSet
- Tresett
Klasse 1: HashSet
HashSet-klassen som er implementert i innsamlingsramme er en iboende implementering av 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());> >}> }> |
>
>Produksjon
[South Africa, Australia, India] Set after removing Australia:[South Africa, India] Iterating over set: South Africa India>
Klasse 2: EnumSet
EnumSet-klassen som er implementert i samlingsramme er en av de spesialiserte implementeringene av Set-grensesnittet for bruk med oppregningstype . Det er en settimplementering med høy ytelse, mye raskere enn HashSet. Alle elementene i et oppregningssett må komme fra en enkelt oppregningstype som spesifiseres når settet opprettes enten eksplisitt eller implisitt. La oss se hvordan du lager et sett objekt ved hjelp av denne klassen.
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);> >}> }> |
>
>Produksjon
Set 1: [CODE, LEARN, CONTRIBUTE, QUIZ]>
Klasse 3: LinkedHashSet
LinkedHashSet-klassen som er implementert i samlingsramme er en ordnet versjon av HashSet som opprettholder en dobbeltlenket liste på tvers av alle elementer. Når iterasjonsrekkefølgen er nødvendig for å opprettholdes, brukes denne klassen. Ved iterasjon gjennom et HashSet er rekkefølgen uforutsigbar, mens et LinkedHashSet lar oss iterere gjennom elementene i den rekkefølgen de ble satt inn. La oss se hvordan du lager et sett objekt ved hjelp av denne klassen.
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());> >}> }> |
>
>Produksjon
[India, Australia, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa>
Klasse 4: Tresett
TreeSet-klassen som er implementert i samlingsramme og implementering av SortedSet Interface og SortedSet utvider Set Interface. Det oppfører seg som et enkelt sett med unntak av at det lagrer elementer i et sortert format. TreeSet bruker en tredatastruktur for lagring. Objekter lagres i sortert, stigende rekkefølge. Men vi kan iterere i synkende rekkefølge ved å bruke metoden TreeSet.descendingIterator(). La oss se hvordan du lager et sett objekt ved hjelp av denne klassen.
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());> >}> }> |
>
>Produksjon
[Australia, India, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa>