set interface java
Denne veiledningen for Java-sett forklarer alt om settgrensesnittet i Java. Det dekker hvordan du kan Iterere gjennom et sett, angi metoder, implementering, sett til liste osv .:
Set in Java er et grensesnitt som er en del av Java Collection Framework og implementerer Collection-grensesnittet. En settsamling gir funksjonene til et matematisk sett.
Et sett kan defineres som en samling av ikke-ordnede objekter, og det kan ikke inneholde dupliserte verdier. Ettersom det angitte grensesnittet arver samlingsgrensesnittet, implementerer det alle metodene i samlingsgrensesnittet.
=> Ta en titt på den perfekte Java-treningsguiden her.
Hva du vil lære:
Java-sett
Det angitte grensesnittet implementeres av klasser og grensesnitt som vist i diagrammet nedenfor.
Som vist i diagrammet ovenfor er Set-grensesnitt arvet av klasser, HashSet, TreeSet, LinkedHashSet og EnumSet. Grensesnittene SortedSet og NavigableSet implementerer også Set interface.
Noen av de viktige egenskapene til Set-grensesnittet er gitt nedenfor:
- Settgrensesnittet er en del av Java Collections Framework.
- Det angitte grensesnittet tillater unike verdier.
- Den kan maksimalt ha en nullverdi.
- Java 8 gir en standardmetode for det angitte grensesnittet - Spliterator.
- Det angitte grensesnittet støtter ikke indeksene til elementene.
- Det angitte grensesnittet støtter generikk.
Hvordan lage et sett?
Det angitte grensesnittet i Java er en del av pakken java.util. For å inkludere et angitt grensesnitt i programmet, må vi bruke ett av følgende importuttalelser.
import java.util.*;
eller
import java.util.Set;
Når angitt grensesnittfunksjonalitet er inkludert i programmet, kan vi lage et sett i Java ved hjelp av noen av de angitte klassene (klasser som implementerer settgrensesnittet) som vist nedenfor.
Set colors_Set = new HashSet();
Vi kan deretter initialisere dette settet ved å legge til noen få elementer til det ved hjelp av add-metoden.
colors_Set.add(“Red”); colors_Set.add(“Green”); colors_Set.add(“Blue”);
Sett eksempel i Java
La oss implementere et enkelt eksempel i Java for å demonstrere Set-grensesnittet.
import java.util.*; public class Main { public static void main(String() args) { // Set demo with HashSet Set Colors_Set = new HashSet(); Colors_Set.add('Red'); Colors_Set.add('Green'); Colors_Set.add('Blue'); Colors_Set.add('Cyan'); Colors_Set.add('Magenta'); //print set contents System.out.print('Set contents:'); System.out.println(Colors_Set); // Set demo with TreeSet System.out.print('
Sorted Set after converting to TreeSet:'); Set tree_Set = new TreeSet(Colors_Set); System.out.println(tree_Set); } }
Produksjon:
Sett innhold: (Rød, Cyan, Blå, Magenta, Grønn)
Sortert sett etter konvertering til TreeSet: (Blå, Cyan, Grønn, Magenta, Rød)
Iterere gjennom sett i Java
Vi har tilgang til hvert av elementene i et sett ved hjelp av forskjellige tilnærminger. Vi vil diskutere disse tilnærmingene nedenfor.
Bruke Iterator
Vi kan definere en iterator som skal krysse gjennom et angitt objekt. Ved hjelp av denne iteratoren kan vi få tilgang til hvert element i settet og behandle det.
Følgende Java-program demonstrerer iterering gjennom settet og skriver ut settelementene.
import java.util.*; import java.util.HashSet; public class Main { public static void main(String args()) { // Create a HashSet object and initialize it Set cities_Set = new HashSet(); cities_Set.add('Bangaluru'); cities_Set.add('Pune'); cities_Set.add('Hyderabad'); cities_Set.add('Kolkata'); // Print the set contents System.out.println('HashSet: ' + cities_Set); // Create an iterator for the cities_Set Iterator iter = cities_Set.iterator(); // print the set contents using iterator System.out.println('Values using Iterator: '); while (iter.hasNext()) { System.out.print(iter.next()+ ' '); } } }
Produksjon:
HashSet: (Bangaluru, Pune, Kolkata, Hyderabad)
Verdier ved bruk av Iterator:
Bangalore Pune Kolkata Hyderabad
Bruke for hver løkke
Vi kan også bruke for-hver løkke for å få tilgang til elementene i et sett. Her gjentas vi gjennom settet i en løkke.
Følgende program demonstrerer dette.
import java.util.*; import java.util.HashSet; public class Main { public static void main(String args()) { // Create a HashSet object and initialize it Set cities_Set = new HashSet(); cities_Set.add('Bangaluru'); cities_Set.add('Pune'); cities_Set.add('Hyderabad'); cities_Set.add('Kolkata'); // Print the set contents System.out.println('HashSet: ' + cities_Set); System.out.println('
Set contents using forEach loop:'); // print the set contents using forEach loop for(String val : cities_Set) { System.out.print(val + ' '); } } }
Produksjon:
HashSet: (Bangaluru, Pune, Kolkata, Hyderabad)
Angi innhold ved hjelp av forEach loop:
Bangalore Pune Kolkata Hyderabad
Bruker Java 8 Stream API
Vi kan også iterere og få tilgang til settelementer ved hjelp av Java 8 stream API. I dette genererer vi en strøm fra et sett og deretter itererer den gjennom strømmen ved hjelp av forEach-løkken.
Java-programmet nedenfor viser gjengivelsen av settet ved hjelp av Java 8 stream API.
import java.util.*; import java.util.HashSet; import java.util.stream.*; public class Main { public static void main(String args()) { // Create a HashSet object and initialize it Set cities_Set = new HashSet(); cities_Set.add('Bangaluru'); cities_Set.add('Pune'); cities_Set.add('Hyderabad'); cities_Set.add('Kolkata'); // Print the set contents System.out.println('HashSet: ' + cities_Set); System.out.println('
Set contents using Java 8 stream API:'); //generate a stream from set Stream stream = cities_Set.stream(); //iterate the stream using forEach loop to print the elements stream.forEach((element) -> { System.out.print(element + ' '); }); } }
Produksjon:
HashSet: (Bangaluru, Pune, Kolkata, Hyderabad)
Angi innhold ved hjelp av Java 8 stream API:
Bangalore Pune Kolkata Hyderabad
Sett metodene API
Nedenfor er metodene som støttes av Set-grensesnittet. Disse metodene utfører grunnleggende operasjoner som å legge til, fjerne, inneholder osv. Sammen med de andre operasjonene.
c # tekniske intervju spørsmål og svar
Metode | Metode Prototype | Beskrivelse |
---|---|---|
er tom | boolsk isEmpty () | Sjekker om settet er tomt |
Legg til | boolsk tilsetning (E e) | Legger til elementet e i settet hvis det ikke er tilstede i settet |
Legg til alle | boolsk addAll (samling c) | Legger til elementet i samlingen c i settet. |
ta vekk | boolsk fjerning (Objekt o) | Sletter det gitte elementet o fra settet. |
Fjern alle | boolsk removeAll (samling c) | Fjern elementene som er tilstede i den gitte samlingen c fra settet. |
inneholder | boolsk inneholder (Objekt o) | Sjekker om det gitte elementet o er tilstede i settet. Returnerer sant hvis ja. |
inneholderAlle | boolsk inneholderAll (samling c) | Sjekker om settet inneholder alle elementene i den spesifiserte samlingen; Returnerer sant hvis ja. |
beholder alt | boolean retainAll (Collection c) | Set beholder alle elementene i den gitte samlingen c |
klar | ugyldig klart () | Tømmer settet ved å slette alle elementene fra settet |
iterator | Iterator iterator () | Brukes til å skaffe iteratoren til settet |
toArray | Objekt () toArray () | Konverterer settet til matrixrepresentasjon som inneholder alle elementene i settet. |
størrelse | int størrelse () | Returnerer totalt antall elementer eller størrelsen på settet. |
hashCode | hashCode () | Returnerer hashCode for settet. |
La oss nå implementere noen av metodene som vi diskuterte ovenfor i et Java-program. Vi vil også se følgende spesifikke operasjoner som involverer to sett.
Sett implementering i Java
Kryss: Vi beholder felles verdier mellom de to settene. Vi utfører et kryss ved hjelp av beholder alt metode.
Union: Her kombinerer vi de to settene. Dette gjøres med Legg til alle metode.
Forskjell: Denne operasjonen fjerner det ene settet fra det andre. Denne operasjonen utføres ved hjelp av Fjern alle metode.
import java.util.*; public class Main { public static void main(String args()) { //declare a set class (HashSet) Set numSet = new HashSet(); //add an element => add numSet.add(13); //add a list to the set using addAll method numSet.addAll(Arrays.asList(new Integer() {1,6,4,7,3,9,8,2,12,11,20})); //print the set System.out.println('Original Set (numSet):' + numSet); //size() System.out.println('
numSet Size:' + numSet.size()); //create a new set class and initialize it with list elements Set oddSet = new HashSet(); oddSet.addAll(Arrays.asList(new Integer() {1, 3, 7, 5, 9})); //print the set System.out.println('
OddSet contents:' + oddSet); //contains () System.out.println('
numSet contains element 2:' + numSet.contains(3)); //containsAll () System.out.println('
numSet contains collection oddset:' + numSet.containsAll(oddSet)); // retainAll () => intersection Set set_intersection = new HashSet(numSet); set_intersection.retainAll(oddSet); System.out.print('
Intersection of the numSet & oddSet:'); System.out.println(set_intersection); // removeAll () => difference Set set_difference = new HashSet(numSet); set_difference.removeAll(oddSet); System.out.print('Difference of the numSet & oddSet:'); System.out.println(set_difference); // addAll () => union Set set_union = new HashSet(numSet); set_union.addAll(oddSet); System.out.print('Union of the numSet & oddSet:'); System.out.println(set_union); } }
Produksjon:
Originalsett (numSet): (1, 2, 3, 4, 20, 6, 7, 8, 9, 11, 12, 13)
numSet Størrelse: 12
OddSet contents:(1, 3, 5, 7, 9)
numSet inneholder element 2: sant
numSet inneholder samling oddset: false
Kryss av numSet & oddSet: (1, 3, 7, 9)
Forskjell mellom numSet og oddSet: (2, 4, 6, 8, 11, 12, 13, 20)
Union of numSet & oddSet: (1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 20)
Sett til matrise
Vi har sett metoden ‘toArray’ i avsnittet ovenfor om metoder. Denne toArray-metoden kan brukes til å konvertere settet til en Array.
Java-programmet nedenfor konverterer settet til en matrise.
import java.util.*; public class Main { public static void main(String() args) { //declare a set class (HashSet) Set setOfColors= new HashSet(); // add data to HashSet setOfColors.add('Red'); setOfColors.add('Green'); setOfColors.add('Blue'); setOfColors.add('Cyan'); setOfColors.add('Magenta'); //print the set System.out.println('The set contents:' + setOfColors); //convert Set to Array using toArray () method String colors_Array() = setOfColors.toArray(new String(setOfColors.size())); //print the Array System.out.println('Set converted to Array:' + Arrays.toString(colors_Array)); } }
Produksjon:
Innstillingen: (Rød, Cyan, Blå, Magenta, Grønn)
Sett konvertert til Array: (Rød, Cyan, Blå, Magenta, Grønn)
Array To Set
For å konvertere en matrise til et sett i Java, kan vi følge to tilnærminger som vist nedenfor.
#1) Vi kan konvertere Array til en liste ved hjelp av asList-metoden og deretter sende denne listen som et argument til settkonstruktøren. Dette resulterer i at det angitte objektet blir opprettet med matriseelementene.
#to) Alternativt kan vi bruke Collections.addAll-metoden til å kopiere matriseelementene til det angitte objektet.
Java-programmet nedenfor implementerer begge disse tilnærmingene for å konvertere en matrise til å sette.
import java.util.*; public class Main { public static void main(String() args) { //declare an array Integer() numArray = {10,50,40,20,60,30,80,70}; System.out.println('The input array:' + Arrays.toString(numArray)); //Approach 1: create a set class and provide array //converted to list as constructor arg Set numSet = new HashSet(Arrays.asList(numArray)); //print the set System.out.println('
Array converted to set through asList:' + numSet); //create another set Set intSet = new HashSet(); //Approach 2: use Collections.addAll method to copy array elements to the set Collections.addAll(intSet, numArray); //print the set System.out.println('
Array converted to set using Collections.addAll:' + intSet); } }
Produksjon:
Inndatamatrisen: (10, 50, 40, 20, 60, 30, 80, 70)
Array konvertert til satt gjennom asListe: (80, 50, 20, 70, 40, 10, 60, 30)
Array konvertert til sett ved bruk av Collections.addAll: (80, 50, 20, 70, 40, 10, 60, 30)
Sett til liste
For å konvertere sett til en liste i Java, kan vi bruke 'addAll' -metoden i listeklassen. Denne metoden kopierer innholdet i settet eller en hvilken som helst samling som er gitt som et argument til listen som påkaller addAll-metoden.
Java-programmet nedenfor konverterer settet til en ArrayList.
import java.util.*; public class Main { public static void main(String() args) { //declare a set class and initialize it Set strSet= new HashSet(); strSet.add('one'); strSet.add('two'); strSet.add('three'); strSet.add('four'); strSet.add('five'); //print the set System.out.println('The set contents: ' + strSet); //declare an ArrayList List strList = new ArrayList(); //using addAll method,copy set elements to ArrayList strList.addAll(strSet); //print the ArrayList System.out.println('The ArrayList from set : ' + strList); } }
Produksjon:
Settets innhold: (fire, en, to, tre, fem)
ArrayListen fra sett: (fire, en, to, tre, fem)
Liste å sette
For å konvertere den gitte listen som ArrayList til et sett i Java, sender vi listeobjektet som et argument til konstruktøren av settet.
Følgende Java-program implementerer denne konverteringen.
import java.util.*; public class Main { public static void main(String() args) { //declare an ArrayList and initialize it List strList = new ArrayList(); strList.add('one'); strList.add('two'); strList.add('three'); strList.add('four'); strList.add('five'); //print the ArrayList System.out.println('The ArrayList: ' + strList); //declare a set class with ArrayList as argument to the constructor Set strSet= new HashSet(strList); //print the set System.out.println('The Set obtained from ArrayList: ' + strSet); } }
Produksjon:
ArrayList: (en, to, tre, fire, fem)
Settet hentet fra ArrayList: (fire, en, to, tre, fem)
Sorter et sett i Java
Set-samlingen i Java har ingen direkte sorteringsmetode. Så vi må følge noen indirekte tilnærminger for å sortere eller bestille innholdet i det angitte objektet. Det er imidlertid et unntak i tilfelle det angitte objektet er et TreeSet.
TreeSet-objektet gir som standard det bestilte settet. Derfor, hvis vi er opptatt av det bestilte settet med elementer, bør vi gå for TreeSet. Til HashSet eller LinkedHashSet-objekter, kan vi konvertere settet til Liste. Sorter listen ved hjelp av Collections.sort () -metoden, og konverter deretter listen tilbake til sett.
Denne tilnærmingen vises i Java-programmet nedenfor.
import java.util.Arrays; import java.util.Collections; import java.util.*; public class Main{ public static void main(String() args) { //Declare a set and initialize it with unsorted list HashSet evenNumSet = new LinkedHashSet( Arrays.asList(4,8,6,2,12,10,62,40,36) ); //print the unsorted set System.out.println('Unsorted Set: ' + evenNumSet); //convert set to list List numList = new ArrayList(evenNumSet); //Sort the list using Collections.sort () method Collections.sort(numList); //convert set to list evenNumSet = new LinkedHashSet(numList); //convert list to set //Print the sorted set System.out.println('Sorted Set:' + evenNumSet); } }
Produksjon:
Usortert sett: (4, 8, 6, 2, 12, 10, 62, 40, 36)
Sortert sett: (2, 4, 6, 8, 10, 12, 36, 40, 62)
Liste mot satt i Java
La oss diskutere noen av forskjellene mellom en liste og et sett.
Liste | Sett |
---|---|
Nullverdier er tillatt. | Bare en nullverdi tillatt. |
Grensesnitt for implementeringsliste. | Redskaper Sett grensesnitt. |
Inneholder en Legacy-klasse, Vector. | Ingen eldre klasser. |
ArrayList, LinkedList er implementering av listegrensesnitt. | HashSet, TreeSet, LinkedHashSet er Set-implementeringer. |
En ordnet sekvens av elementer. | En uordnet samling av distinkte elementer. |
Tillater duplikater. | Ingen duplikater er tillatt. |
Kunne få tilgang til elementer i henhold til elementets posisjon. | Ingen posisjonell tilgang. |
Nye metoder definert i et listegrensesnitt. | Ingen nye metoder er definert i Set-grensesnittet. Samlingsgrensesnittmetoder skal brukes med Set subklasser. |
Kan krysses fremover og bakover ved hjelp av ListIterator. | Det kan bare krysses fremover med Iterator. |
ofte stilte spørsmål
Q # 1) Hva er et sett i Java?
Svar: Et sett er en uordnet samling av unike elementer og modellerer vanligvis begrepet Set i matematikk.
Set er et grensesnitt som utvider Collection-grensesnittet. Den inneholder metodene den arver fra Collection-grensesnittet. Det angitte grensesnittet legger bare til en begrensning, det vil si at ingen duplikater skal være tillatt.
Q # 2)Er settet bestilt i Java?
Svar: Nei. Java Set er ikke bestilt. Det gir ikke posisjonell tilgang også.
Q # 3)Kan et sett inneholde duplikater?
Svar: Et sett er en samling av unike elementer, det kan ikke ha noen duplikater.
Q # 4)Er Java Set iterable?
Svar: Ja. Settgrensesnittet implementerer et Iterabelt grensesnitt, og settet kan dermed krysses eller iteres ved hjelp av en forEach-løkke.
hva er den beste pc-optimalisereren
Q # 5)Er NULL tillatt i settet?
Svar: Et sett tillater nullverdi, men maksimalt er en nullverdi tillatt i settimplementeringer som HashSet og LinkedHashSet. Når det gjelder TreeSet, kaster det unntak for kjøretid hvis null er spesifisert.
Konklusjon
I denne opplæringen har vi diskutert de generelle konseptene og implementeringen relatert til Set-grensesnittet i Java.
Det angitte grensesnittet har ikke definert noen nye metoder, men det bruker metodene i Collector-grensesnittet og legger bare til implementering for å forhindre dupliserte verdier. Settet tillater maksimalt en nullverdi.
I de påfølgende veiledningene vil vi diskutere spesifikke implementeringer av Set-grensesnittet som HashSet og TreeSet.
=> Besøk her for å lære Java fra bunnen av.
Anbefalt lesing
- Java Reflection Tutorial med eksempler
- JAVA-opplæring for nybegynnere: 100+ praktiske Java-videoveiledninger
- Java String inneholder () Metodeopplæring med eksempler
- Jagged Array In Java - Opplæring med eksempler
- Java-skannerklasseopplæring med eksempler
- Java Array Length Tutorial med kodeeksempler
- Java String Tutorial | Java strengmetoder med eksempler
- Hva er Java Vector | Java Vector Class Tutorial med eksempler