set interface java
Denne Java Set-vejledning forklarer alt om Set-interface i Java. Det dækker, hvordan man gentager sig gennem et sæt, sæt metoder, implementering, sæt til liste osv .:
Set in Java er en grænseflade, der er en del af Java Collection Framework og implementerer Collection-grænsefladen. En sætsamling indeholder funktionerne i et matematisk sæt.
Et sæt kan defineres som en samling af ikke-ordnede objekter, og det kan ikke indeholde duplikatværdier. Da den indstillede grænseflade arver samlingsgrænsefladen, implementerer den alle metoderne i grænsefladen Samling.
=> Tjek den perfekte Java-træningsvejledning her.
Hvad du lærer:
Java-sæt
Den indstillede grænseflade implementeres af klasser og grænseflader som vist i nedenstående diagram.
Som vist i ovenstående diagram arves Set-interface af klasser, HashSet, TreeSet, LinkedHashSet og EnumSet. Grænsefladerne SortedSet og NavigableSet implementerer også Set-interface.
Nogle af de vigtige egenskaber ved Set-grænsefladen er angivet nedenfor:
- Sætgrænsefladen er en del af Java Collections Framework.
- Den indstillede grænseflade giver mulighed for unikke værdier.
- Det kan højst have en nulværdi.
- Java 8 giver en standardmetode til det indstillede interface - Spliterator.
- Sætgrænsefladen understøtter ikke elementernes indekser.
- Det indstillede interface understøtter generics.
Sådan oprettes et sæt?
Den indstillede grænseflade i Java er en del af java.util-pakken. For at inkludere en indstillet grænseflade i programmet skal vi bruge et af følgende importudtalelser.
import java.util.*;
eller
import java.util.Set;
Når indstillet interface-funktionalitet er inkluderet i programmet, kan vi oprette et sæt i Java ved hjælp af en af de indstillede klasser (klasser, der implementerer sæt-interface) som vist nedenfor.
Set colors_Set = new HashSet();
Vi kan derefter initialisere dette sæt objekt ved at tilføje et par elementer til det ved hjælp af add-metoden.
colors_Set.add(“Red”); colors_Set.add(“Green”); colors_Set.add(“Blue”);
Sæt eksempel i Java
Lad os implementere et simpelt eksempel i Java for at demonstrere Set-grænsefladen.
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); } }
Produktion:
Indstil indhold: (Rød, Cyan, Blå, Magenta, Grøn)
Sorteret sæt efter konvertering til TreeSet: (Blå, Cyan, Grøn, Magenta, Rød)
Iterate Through Set I Java
Vi kan få adgang til hvert af elementerne i et sæt ved hjælp af forskellige tilgange. Vi vil diskutere disse tilgange nedenfor.
Brug af Iterator
Vi kan definere en iterator, der skal krydses gennem et sæt objekt. Ved hjælp af denne iterator kan vi få adgang til hvert element i sættet og behandle det.
Følgende Java-program viser iterering gennem sættet og udskriver sætelementerne.
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()+ ' '); } } }
Produktion:
HashSet: (Bangaluru, Pune, Kolkata, Hyderabad)
Værdier, der bruger Iterator:
Bangalore Pune Kolkata Hyderabad
Brug af For-hver løkke
Vi kan også bruge for-hver løkke til at få adgang til elementerne i et sæt. Her gentager vi gennem sættet i en løkke.
Det 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 + ' '); } } }
Produktion:
HashSet: (Bangaluru, Pune, Kolkata, Hyderabad)
Indstil indhold ved hjælp af forEach loop:
Bangalore Pune Kolkata Hyderabad
Brug af Java 8 Stream API
Vi kan også gentage og få adgang til sætelementer ved hjælp af Java 8 stream API. I dette genererer vi en stream fra et sæt og gentager derefter strømmen ved hjælp af forEach-sløjfen.
Java-programmet nedenfor viser iteration af sættet ved hjælp af 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 + ' '); }); } }
Produktion:
HashSet: (Bangaluru, Pune, Kolkata, Hyderabad)
Indstil indhold ved hjælp af Java 8 stream API:
Bangalore Pune Kolkata Hyderabad
Indstil metoder API
Nedenfor er de metoder, der understøttes af Set-grænsefladen. Disse metoder udfører grundlæggende operationer som tilføj, fjern, indeholder osv. Sammen med de andre operationer.
top 10 musik downloader til android
Metode | Metode Prototype | Beskrivelse |
---|---|---|
er tom | boolsk isEmpty () | Kontrollerer, om sættet er tomt |
tilføje | boolsk tilføjelse (E e) | Føjer elementet e til sættet, hvis det ikke er til stede i sættet |
tilføjAlle | boolsk addAll (samling c) | Føjer elementet i samlingen c til sættet. |
fjerne | boolsk fjernelse (Objekt o) | Sletter det givne element o fra sættet. |
Fjern alt | boolsk removeAll (samling c) | Fjerner elementerne i den givne samling c fra sættet. |
indeholder | boolsk indeholder (Objekt o) | Kontrollerer, om det givne element o er til stede i sættet. Returnerer sandt, hvis ja. |
indeholderAlle | boolsk indeholderAlle (samling c) | Kontrollerer, om sættet indeholder alle elementerne i den angivne samling; Returnerer sandt, hvis ja. |
bevar alle | boolean retainAll (Collection c) | Sæt bevarer alle elementerne i den givne samling c |
klar | ugyldigt klart () | Rydder sættet ved at slette alle elementerne fra sættet |
iterator | Iterator iterator () | Bruges til at hente iteratoren til sættet |
toArray | Objekt () toArray () | Konverterer sættet til matrixrepræsentation, der indeholder alle elementerne i sættet. |
størrelse | int størrelse () | Returnerer det samlede antal elementer eller størrelsen på sættet. |
hashCode | hashCode () | Returnerer hashCode for sættet. |
Lad os nu implementere nogle af de metoder, vi diskuterede ovenfor i et Java-program. Vi vil også se følgende specifikke operationer, der involverer to sæt.
Indstil implementering i Java
Vejkryds: Vi bevarer fælles værdier mellem de to sæt. Vi udfører et kryds ved hjælp af bevar alle metode.
Union: Her kombinerer vi de to sæt. Dette gøres med tilføjAlle metode.
Forskel: Denne handling fjerner det ene sæt fra det andet. Denne handling udføres ved hjælp af Fjern alt 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); } }
Produktion:
Originalt sæt (numSet): (1, 2, 3, 4, 20, 6, 7, 8, 9, 11, 12, 13)
numSet Størrelse: 12
OddSet-indhold: (1, 3, 5, 7, 9)
numSet indeholder element 2: sandt
numSet indeholder samling oddset: false
Skæringspunktet mellem numSet og oddSet: (1, 3, 7, 9)
Forskel på numSet & oddSet: (2, 4, 6, 8, 11, 12, 13, 20)
Union af numSet & oddSet: (1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 20)
Indstil til matrix
Vi har set metoden 'toArray' i ovenstående afsnit om metoder. Denne toArray-metode kan bruges til at konvertere sættet til en Array.
Java-programmet nedenfor konverterer sættet til en matrix.
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)); } }
Produktion:
Det indstillede indhold: (Rød, Cyan, Blå, Magenta, Grøn)
Sæt konverteret til matrix: (Rød, Cyan, Blå, Magenta, Grøn)
Array at indstille
For at konvertere en Array til et sæt i Java kan vi følge to tilgange som vist nedenfor.
hvordan man bruger en .bin-fil
# 1) Vi kan konvertere Array til en liste ved hjælp af asList-metoden og derefter sende denne liste som et argument til sætkonstruktøren. Dette resulterer i, at det indstillede objekt oprettes med matrixelementerne.
#to) Alternativt kan vi bruge Collections.addAll-metoden til at kopiere matrixelementerne til det indstillede objekt.
Java-programmet nedenfor implementerer begge disse tilgange til at konvertere et array til sæt.
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); } }
Produktion:
Input array: (10, 50, 40, 20, 60, 30, 80, 70)
Array konverteret til set gennem asList: (80, 50, 20, 70, 40, 10, 60, 30)
Array konverteret til sæt ved hjælp af Collections.addAll: (80, 50, 20, 70, 40, 10, 60, 30)
Indstil til liste
For at konvertere sæt til en liste i Java kan vi bruge 'addAll'-metoden i listeklassen. Denne metode kopierer indholdet af sættet eller en hvilken som helst samling, der leveres som et argument til listen, der påkalder addAll-metoden.
Java-programmet nedenfor konverterer sættet 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); } }
Produktion:
Sættets indhold: (fire, en, to, tre, fem)
ArrayListen fra sæt: (fire, en, to, tre, fem)
Liste, der skal indstilles
For at konvertere den givne liste som ArrayList til et sæt i Java, sender vi listeobjektet som et argument til konstruktøren af sættet.
Følgende Java-program implementerer denne konvertering.
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); } }
Produktion:
ArrayList: (en, to, tre, fire, fem)
Sættet opnået fra ArrayList: (fire, en, to, tre, fem)
Sorter et sæt i Java
Set-samlingen i Java har ingen direkte metode til sortering. Så vi er nødt til at følge nogle indirekte tilgange til at sortere eller ordne indholdet af det indstillede objekt. Der er dog en undtagelse, hvis det indstillede objekt er et TreeSet.
TreeSet-objektet leverer som standard det bestilte sæt. Derfor, hvis vi er ivrige efter det bestilte sæt af elementer, bør vi gå til TreeSet. Til HashSet eller LinkedHashSet-objekter, kan vi konvertere sættet til Liste. Sorter listen ved hjælp af Collections.sort () -metoden, og konverter derefter listen tilbage til indstillingen.
Denne tilgang er vist i nedenstående Java-program.
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); } }
Produktion:
Usorteret sæt: (4, 8, 6, 2, 12, 10, 62, 40, 36)
Sorteret sæt: (2, 4, 6, 8, 10, 12, 36, 40, 62)
Liste Vs indstillet i Java
Lad os diskutere nogle af forskellene mellem en liste og et sæt.
Liste | Sæt |
---|---|
Nulværdier er tilladt. | Kun én nulværdi tilladt. |
Grænseflade til implementeringsliste. | Redskaber Sæt interface. |
Indeholder en Legacy-klasse, Vector. | Ingen ældre klasser. |
ArrayList, LinkedList er implementeringer af listegrænseflader. | HashSet, TreeSet, LinkedHashSet er Set-implementeringer. |
En ordnet rækkefølge af elementer. | En uordnet samling af forskellige elementer. |
Tillader duplikater. | Ingen duplikater er tilladt. |
I stand til at få adgang til elementer i henhold til elementets position. | Ingen positionel adgang. |
Nye metoder defineret i en listegrænseflade. | Ingen nye metoder defineret i Set-grænsefladen. Samlingsgrænseflademetoder skal bruges med sæt underklasser. |
Kan krydses fremad og bagud ved hjælp af ListIterator. | Det kan kun krydses fremad med Iterator. |
Ofte stillede spørgsmål
Q # 1) Hvad er et sæt i Java?
Svar: Et sæt er en uordnet samling af unikke elementer og modellerer typisk begrebet Set i matematik.
Set er en grænseflade, der udvider Collection-grænsefladen. Den indeholder de metoder, den arver fra samlingsgrænsefladen. Den indstillede grænseflade tilføjer kun en begrænsning, dvs. ingen duplikater skal tillades.
Q # 2)Er sættet bestilt i Java?
Svar: Nej. Java-sæt er ikke bestilt. Det giver heller ikke positionsadgang.
Q # 3)Kan et sæt indeholde dubletter?
Svar: Et sæt er en samling af unikke elementer, det kan ikke have nogen dubletter.
Q # 4)Er Java Set iterabelt?
Svar: Ja. Sætgrænsefladen implementerer en Iterabel grænseflade, og dermed kan sættet gennemkøres eller gentages ved hjælp af en forEach-løkke.
Q # 5)Er NULL tilladt i sættet?
Svar: Et sæt tillader nulværdi, men højst en nulværdi er tilladt i sætimplementeringer som HashSet og LinkedHashSet. I tilfælde af TreeSet kaster den undtagelse for kørsel, hvis nul er angivet.
Konklusion
I denne vejledning har vi diskuteret de generelle begreber og implementering relateret til Set-interface i Java.
Den indstillede grænseflade har ingen nye metoder defineret, men den bruger metoderne i Collector-grænsefladen og tilføjer kun implementering for at forbyde duplikatværdier. Sættet tillader højst en nulværdi.
I vores efterfølgende tutorials vil vi diskutere specifikke implementeringer af Set-grænsefladen som HashSet og TreeSet.
=> Besøg her for at lære Java fra bunden.
Anbefalet læsning
- Java Reflection Tutorial med eksempler
- JAVA-vejledning til begyndere: 100+ praktiske Java-videovejledninger
- Java String indeholder () Metodevejledning med eksempler
- Jagged Array In Java - Vejledning med eksempler
- Java Scanner-klassevejledning med eksempler
- Java Array Length Tutorial med kodeeksempler
- Java String Tutorial | Java strengmetoder med eksempler
- Hvad er Java Vector | Java Vector Class Tutorial med eksempler