set interface java
Aquest tutorial de configuració de Java explica tot sobre la interfície de configuració de Java. Cobreix com fer una iteració mitjançant un conjunt, establir mètodes, implementació, establir a llista, etc.:
Establir a Java és una interfície que forma part de Java Collection Framework i implementa la interfície de col·lecció. Una col·lecció de conjunts proporciona les característiques d’un conjunt matemàtic.
Un conjunt es pot definir com una col·lecció d'objectes no ordenats i no pot contenir valors duplicats. Com que la interfície configurada hereta la interfície de col·lecció, implementa tots els mètodes de la interfície de col·lecció.
=> Consulteu la guia de formació Java perfecta aquí.
Què aprendreu:
Conjunt de Java
La interfície configurada s’implementa per classes i interfícies tal com es mostra al diagrama següent.
Tal com es mostra al diagrama anterior, Set interface és heretat per classes, HashSet, TreeSet, LinkedHashSet i EnumSet. Les interfícies SortedSet i NavigableSet també implementen la interfície Set.
A continuació es detallen algunes de les característiques importants de la interfície Set:
- La interfície configurada forma part del Java Collections Framework.
- La interfície configurada permet obtenir valors únics.
- Pot tenir com a màxim un valor nul.
- Java 8 proporciona un mètode per defecte per a la interfície configurada: Spliterator.
- La interfície configurada no admet els índexs dels elements.
- La interfície configurada admet els genèrics.
Com es crea un conjunt?
La interfície configurada a Java forma part del paquet java.util. Per incloure una interfície configurada al programa, hem d’utilitzar una de les declaracions d’importació següents.
import java.util.*;
o bé
import java.util.Set;
Un cop s'inclou la funcionalitat de la interfície de configuració al programa, podem crear un conjunt a Java utilitzant qualsevol de les classes de conjunts (classes que implementen la interfície de conjunt) tal com es mostra a continuació.
Set colors_Set = new HashSet();
A continuació, podem inicialitzar aquest objecte establert afegint-hi alguns elements mitjançant el mètode add.
colors_Set.add(“Red”); colors_Set.add(“Green”); colors_Set.add(“Blue”);
Feu un exemple a Java
Implantem un exemple senzill a Java per demostrar la interfície Set.
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); } }
Sortida:
Contingut del conjunt: [vermell, cian, blau, magenta, verd]
Conjunt ordenat després de convertir-lo a TreeSet: [Blau, cian, verd, magenta, vermell]
Iterar a través del conjunt de Java
Podem accedir a cadascun dels elements d’un conjunt mitjançant diversos enfocaments. A continuació, comentarem aquests enfocaments.
Utilitzant Iterator
Podem definir un iterador per recórrer un objecte conjunt. Mitjançant aquest iterador podem accedir a cada element del conjunt i processar-lo.
El següent programa Java mostra la iteració del conjunt i imprimeix els elements del conjunt.
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()+ ' '); } } }
Sortida:
HashSet: [Bangaluru, Pune, Calcuta, Hyderabad]
Valors que fan servir Iterator:
Bangalore Pune Kolkata Hyderabad
Utilitzant el bucle For-each
També podem utilitzar el bucle for-each per accedir als elements d’un conjunt. Aquí iterem a través del conjunt en un bucle.
El programa següent ho demostra.
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 + ' '); } } }
Sortida:
HashSet: [Bangaluru, Pune, Calcuta, Hyderabad]
Estableix el contingut mitjançant el bucle forEach:
Bangalore Pune Kolkata Hyderabad
Utilitzant l'API Java 8 Stream
També podem iterar i accedir a elements del conjunt mitjançant l'API de flux de Java 8. En això, generem un flux a partir d'un conjunt i després iterem a través del flux mitjançant el bucle forEach.
El programa Java següent mostra la iteració del conjunt mitjançant l'API de flux de Java 8.
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 + ' '); }); } }
Sortida:
HashSet: [Bangaluru, Pune, Calcuta, Hyderabad]
Definiu contingut mitjançant l'API de flux de Java 8:
Bangalore Pune Kolkata Hyderabad
API de mètodes de configuració
A continuació es detallen els mètodes compatibles amb la interfície Set. Aquests mètodes realitzen operacions bàsiques com afegir, eliminar, contenir, etc. juntament amb les altres operacions.
diferència entre les proves de caixa negra i caixa blanca
Mètode | Mètode prototip | Descripció |
---|---|---|
està buit | boolean isEmpty () | Comprova si el conjunt està buit |
afegir | addició booleana (E e) | Afegeix l'element e al conjunt si no està present al conjunt |
addAll | add boolean add (Col·lecció c) | Afegeix l'element de la col·lecció c al conjunt. |
eliminar | eliminar booleà (objecte o) | Suprimeix l'element o del conjunt. |
esborra-ho tot | booleà removeAll (Col·lecció c) | Elimina els elements presents a la col·lecció donada c del conjunt. |
conté | booleà conté (Objecte o) | Comprova si l'element o donat està present al conjunt. Retorna cert si és afirmatiu. |
conté Tot | booleà conté Tot (Col·lecció c) | Comprova si el conjunt conté tots els elements de la col·lecció especificada; Retorna cert si és afirmatiu. |
retainAll | boolean retainAll (Col·lecció c) | El conjunt conserva tots els elements de la col·lecció donada c |
clar | void clear () | Esborra el conjunt suprimint tots els elements del conjunt |
iterador | Iterador iterador () | S’utilitza per obtenir l’iterador del conjunt |
toArray | Objecte [] toArray () | Converteix el conjunt en representació de matriu que conté tots els elements del conjunt. |
mida | int size () | Retorna el nombre total d'elements o la mida del conjunt. |
hashCode | hashCode () | Retorna el codi hash del conjunt. |
Ara implementem alguns dels mètodes que hem comentat anteriorment en un programa Java. També veurem les següents operacions específiques que impliquen dos conjunts.
Estableix la implementació a Java
Intersecció: Conservem valors comuns entre els dos conjunts. Realitzem una intersecció mitjançant el retainAll mètode.
Unió: Aquí combinem els dos conjunts. Això es fa amb el addAll mètode.
Diferència: Aquesta operació elimina un conjunt de l’altre. Aquesta operació es realitza mitjançant el fitxer esborra-ho tot mètode.
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); } }
Sortida:
Conjunt original (numSet): [1, 2, 3, 4, 20, 6, 7, 8, 9, 11, 12, 13]
num Mida del conjunt: 12
Contingut OddSet: [1, 3, 5, 7, 9]
numSet conté l'element 2: true
numSet conté la col·lecció oddset: false
Intersecció del numSet i oddSet: [1, 3, 7, 9]
Diferència del numSet & oddSet: [2, 4, 6, 8, 11, 12, 13, 20]
Unió del numSet & oddSet: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 20]
Estableix a matriu
Hem vist el mètode 'toArray' a la secció anterior sobre mètodes. Aquest mètode toArray es pot utilitzar per convertir el conjunt a una matriu.
El programa Java següent converteix el conjunt en una matriu.
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)); } }
Sortida:
El contingut del conjunt: [Vermell, Cian, Blau, Magenta, Verd]
Conjunt convertit a matriu: [vermell, cian, blau, magenta, verd]
Array To Set
Per convertir una matriu a un conjunt a Java, podem seguir dos enfocaments com es mostra a continuació.
# 1) Podem convertir la matriu a una llista mitjançant el mètode asList i després passar aquesta llista com a argument al constructor de conjunts. Això fa que es creï l'objecte establert amb els elements de la matriu.
# 2) Com a alternativa, podem utilitzar el mètode Collections.addAll per copiar els elements de la matriu a l’objecte establert.
El programa Java següent implementa aquests dos enfocaments per convertir una matriu a configurar.
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); } }
Sortida:
La matriu d'entrada: [10, 50, 40, 20, 60, 30, 80, 70]
Array convertit a conjunt mitjançant asList: [80, 50, 20, 70, 40, 10, 60, 30]
Array convertit a conjunt mitjançant Collections.addAll: [80, 50, 20, 70, 40, 10, 60, 30]
Estableix a llista
Per convertir el conjunt a una llista a Java, podem utilitzar el mètode 'addAll' de la classe de llista. Aquest mètode copia el contingut del conjunt o de qualsevol col·lecció proporcionada com a argument a la llista que invoca el mètode addAll.
El programa Java següent converteix el conjunt en una llista 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); } }
Sortida:
El contingut del conjunt: [quatre, un, dos, tres, cinc]
The ArrayList del conjunt: [quatre, un, dos, tres, cinc]
Llista per definir
Per convertir la llista donada com ArrayList a un conjunt a Java, passem l'objecte de la llista com a argument al constructor del conjunt.
El següent programa Java implementa aquesta conversió.
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); } }
Sortida:
The ArrayList: [un, dos, tres, quatre, cinc]
El conjunt obtingut d'ArrayList: [quatre, un, dos, tres, cinc]
Ordeneu un conjunt a Java
La col·lecció Set a Java no té cap mètode directe d’ordenació. Per tant, hem de seguir alguns enfocaments indirectes per ordenar o ordenar el contingut de l’objecte establert. Tot i això, hi ha una excepció en cas que l’objecte establert sigui un TreeSet.
Per defecte, l'objecte TreeSet proporciona el conjunt ordenat. Per tant, si estem interessats en el conjunt d’elements ordenats, hauríem d’anar a TreeSet. Per a HashSet o objectes LinkedHashSet, podem convertir el conjunt a Llista. Ordeneu la llista mitjançant el mètode Collections.sort () i, a continuació, torneu a convertir la llista a set.
Aquest enfocament es mostra al programa Java següent.
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); } }
Sortida:
Conjunt sense classificar: [4, 8, 6, 2, 12, 10, 62, 40, 36]
Conjunt ordenat: [2, 4, 6, 8, 10, 12, 36, 40, 62]
Llista Vs establerta a Java
Analitzem algunes de les diferències entre una llista i un conjunt.
Llista | Conjunt |
---|---|
Es permeten valors nuls. | Només es permet un valor nul. |
Interfície de la llista d’implements. | Implementa la interfície del conjunt. |
Conté una classe antiga, Vector. | No hi ha classes heretades. |
ArrayList, LinkedList és implementacions d'interfície de llista. | HashSet, TreeSet, LinkedHashSet són implementacions de conjunts. |
Una seqüència ordenada d’elements. | Una col·lecció no ordenada d’elements diferents. |
Permet duplicats. | No es permeten duplicats. |
Capaç d’accedir als elements segons la posició de l’element. | Sense accés posicional. |
Nous mètodes definits en una interfície de llista. | No hi ha cap mètode nou definit a la interfície Set. Els mètodes d'interfície de col·lecció s'han d'utilitzar amb les subclasses Set. |
Es pot recórrer cap endavant i cap enrere mitjançant ListIterator. | Només es pot recórrer en direcció endavant amb Iterator. |
Preguntes freqüents
P # 1) Què és un conjunt a Java?
Resposta: Un conjunt és una col·lecció no ordenada d’elements únics i que sol modelar el concepte de conjunt en matemàtiques.
Set és una interfície que amplia la interfície de col·lecció. Conté els mètodes que hereta de la interfície de col·lecció. La interfície configurada només afegeix una restricció, és a dir, no s’han de permetre duplicats.
Q # 2)El conjunt està ordenat a Java?
Resposta: No, el conjunt de Java no està ordenat. No proporciona accés posicional també.
Q # 3)Un conjunt pot contenir duplicats?
Resposta: Un conjunt és una col·lecció d’elements únics, no pot tenir cap duplicat.
Q # 4)Java Set és iterable?
Resposta: Sí. La interfície configurada implementa una interfície iterable i, per tant, es pot recórrer o iterar mitjançant un bucle forEach.
Q # 5)Es permet NULL al conjunt?
Resposta: Un conjunt permet un valor nul però, com a màxim, es permet un valor nul en implementacions de conjunts com HashSet i LinkedHashSet. En el cas de TreeSet, genera una excepció en temps d'execució si s'especifica el valor nul.
Conclusió
En aquest tutorial, hem discutit els conceptes generals i la implementació relacionats amb la configuració de la interfície a Java.
La interfície configurada no té nous mètodes definits, però utilitza els mètodes de la interfície Collector i només afegeix implementació per prohibir els valors duplicats. El conjunt permet com a màxim un valor nul.
En els nostres tutorials posteriors, parlarem de les implementacions específiques de la interfície Set com HashSet i TreeSet.
=> Visiteu aquí per aprendre Java des de zero.
com obrir un fitxer SWF en Chrome
Lectura recomanada
- Tutorial de reflexió de Java amb exemples
- Tutorial JAVA per a principiants: més de 100 tutorials pràctics de vídeo Java
- Java String conté () Tutorial de mètode amb exemples
- Matriu dentada a Java: tutorial amb exemples
- Tutorial de classe de Java Scanner amb exemples
- Tutorial de longitud de matriu de Java amb exemples de codi
- Tutorial de cadenes de Java | Mètodes de cadena Java amb exemples
- Què és Java Vector | Tutorial de Java Vector Class amb exemples