set interface java
Questo tutorial Java Set spiega tutto sull'interfaccia Set in Java. Spiega come eseguire l'iterazione in un set, impostare metodi, implementazione, impostare su elenco, ecc .:
Set in Java è un'interfaccia che fa parte di Java Collection Framework e implementa l'interfaccia Collection. Una raccolta di set fornisce le caratteristiche di un set matematico.
Un set può essere definito come una raccolta di oggetti non ordinati e non può contenere valori duplicati. Poiché l'interfaccia set eredita l'interfaccia Collection, implementa tutti i metodi dell'interfaccia Collection.
=> Dai un'occhiata alla guida di formazione Java perfetta qui.
Cosa imparerai:
Java Set
L'interfaccia impostata è implementata da classi e interfacce come mostrato nel diagramma seguente.
Come mostrato nel diagramma sopra, l'interfaccia Set viene ereditata dalle classi, HashSet, TreeSet, LinkedHashSet e EnumSet. Le interfacce SortedSet e NavigableSet implementano anche l'interfaccia Set.
Di seguito sono riportate alcune delle caratteristiche importanti dell'interfaccia Set:
- L'interfaccia set è una parte di Java Collections Framework.
- L'interfaccia impostata consente valori univoci.
- Può avere al massimo un valore nullo.
- Java 8 fornisce un metodo predefinito per l'interfaccia impostata: Spliterator.
- L'interfaccia impostata non supporta gli indici degli elementi.
- L'interfaccia impostata supporta i generici.
Come creare un set?
L'interfaccia set in Java fa parte del pacchetto java.util. Per includere un'interfaccia set nel programma, dobbiamo usare una delle seguenti istruzioni di importazione.
import java.util.*;
o
import java.util.Set;
Una volta che la funzionalità dell'interfaccia set è inclusa nel programma, è possibile creare un set in Java utilizzando una qualsiasi delle classi set (classi che implementano l'interfaccia set) come mostrato di seguito.
Set colors_Set = new HashSet();
Possiamo quindi inizializzare questo oggetto set aggiungendovi alcuni elementi utilizzando il metodo add.
colors_Set.add(“Red”); colors_Set.add(“Green”); colors_Set.add(“Blue”);
Imposta esempio in Java
Implementiamo un semplice esempio in Java per dimostrare l'interfaccia 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); } }
Produzione:
Imposta contenuto: (Rosso, Ciano, Blu, Magenta, Verde)
Set ordinato dopo la conversione in TreeSet: (Blu, Ciano, Verde, Magenta, Rosso)
Iterate attraverso Set in Java
Possiamo accedere a ciascuno degli elementi di un Set utilizzando vari approcci. Discuteremo questi approcci di seguito.
Utilizzando Iterator
Possiamo definire un iteratore per attraversare un oggetto impostato. Usando questo iteratore possiamo accedere a ogni elemento del Set ed elaborarlo.
Il seguente programma Java mostra l'iterazione del set e stampa gli elementi del set.
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()+ ' '); } } }
Produzione:
HashSet: (Bangaluru, Pune, Kolkata, Hyderabad)
Valori che utilizzano Iterator:
Bangalore Pune Kolkata Hyderabad
Utilizzo del ciclo For-each
Possiamo anche usare il ciclo for-each per accedere agli elementi in un set. Qui iteriamo attraverso l'insieme in un ciclo.
Il seguente programma lo dimostra.
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 + ' '); } } }
Produzione:
HashSet: (Bangaluru, Pune, Kolkata, Hyderabad)
Imposta i contenuti usando forEach loop:
Bangalore Pune Kolkata Hyderabad
Utilizzo dell'API Java 8 Stream
Possiamo anche iterare e accedere agli elementi del set utilizzando l'API di flusso Java 8. In questo, generiamo un flusso da un set e quindi iteriamo attraverso il flusso utilizzando il ciclo forEach.
Il programma Java riportato di seguito mostra l'iterazione del set utilizzando l'API di flusso 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 + ' '); }); } }
Produzione:
HashSet: (Bangaluru, Pune, Kolkata, Hyderabad)
Imposta i contenuti utilizzando l'API Java 8 stream:
Bangalore Pune Kolkata Hyderabad
Set Methods API
Di seguito sono riportati i metodi supportati dall'interfaccia Set. Questi metodi eseguono operazioni di base come aggiungi, rimuovi, contiene, ecc. Insieme alle altre operazioni.
nessun oggetto flash shockwave installato lettore di file swf
Metodo | Metodo Prototipo | Descrizione |
---|---|---|
è vuoto | booleano isEmpty () | Controlla se il set è vuoto |
Inserisci | booleano add (E e) | Aggiunge l'elemento e all'insieme se non è presente nell'insieme |
Aggiungi tutto | booleano addAll (Collezione c) | Aggiunge l'elemento della collezione c al set. |
rimuovere | booleano remove (Object o) | Elimina l'elemento specificato o dall'insieme. |
Rimuovi tutto | booleano removeAll (Collezione c) | Rimuove gli elementi presenti nella raccolta data c dall'insieme. |
contiene | booleano contiene (Oggetto o) | Controlla se l'elemento o è presente nell'insieme. Restituisce vero se sì. |
containsAll | booleano containsAll (raccolta c) | Verifica se il set contiene tutti gli elementi nella raccolta specificata; Restituisce vero se sì. |
keepAll | booleano keepAll (raccolta c) | Set mantiene tutti gli elementi nella raccolta data c |
chiaro | void clear () | Cancella il set eliminando tutti gli elementi dal set |
iteratore | Iteratore iteratore () | Utilizzato per ottenere l'iteratore per il set |
toArray | Object () toArray () | Converte il set in una rappresentazione array che contiene tutti gli elementi nel set. |
taglia | int size () | Restituisce il numero totale di elementi o la dimensione dell'insieme. |
codice hash | codice hash () | Restituisce hashCode del set. |
Ora implementiamo alcuni dei metodi che abbiamo discusso sopra in un programma Java. Vedremo anche le seguenti operazioni specifiche che coinvolgono due set.
Imposta implementazione in Java
Intersezione: Manteniamo valori comuni tra i due insiemi. Eseguiamo un incrocio utilizzando il keepAll metodo.
Unione: Qui uniamo i due set. Questo viene fatto con il Aggiungi tutto metodo.
Differenza: Questa operazione rimuove un set dall'altro. Questa operazione viene eseguita utilizzando il Rimuovi tutto metodo.
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); } }
Produzione:
Set originale (numSet): (1, 2, 3, 4, 20, 6, 7, 8, 9, 11, 12, 13)
numSet Dimensioni: 12
Contenuti OddSet: (1, 3, 5, 7, 9)
numSet contiene l'elemento 2: true
numSet contiene la raccolta oddset: false
Intersezione di numSet e oddSet: (1, 3, 7, 9)
Differenza tra numSet e oddSet: (2, 4, 6, 8, 11, 12, 13, 20)
Unione di numSet e oddSet: (1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 20)
Imposta su array
Abbiamo visto il metodo 'toArray' nella sezione precedente sui metodi. Questo metodo toArray può essere utilizzato per convertire il set in un Array.
Il seguente programma Java converte il set in un array.
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)); } }
Produzione:
Il contenuto del set: (Rosso, Ciano, Blu, Magenta, Verde)
Set convertito in Array: (Rosso, Ciano, Blu, Magenta, Verde)
Matrice da impostare
Per convertire un array in un set in Java, possiamo seguire due approcci come mostrato di seguito.
# 1) Possiamo convertire l'array in un elenco utilizzando il metodo asList e quindi passare questo elenco come argomento al costruttore di set. Ciò si traduce nella creazione dell'oggetto set con gli elementi dell'array.
#Due) In alternativa, possiamo usare il metodo Collections.addAll per copiare gli elementi dell'array nell'oggetto set.
Il seguente programma Java implementa entrambi questi approcci per convertire un array in set.
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); } }
Produzione:
La matrice di input: (10, 50, 40, 20, 60, 30, 80, 70)
Array convertito in set tramite asList: (80, 50, 20, 70, 40, 10, 60, 30)
Array convertito in set utilizzando Collections.addAll: (80, 50, 20, 70, 40, 10, 60, 30)
Imposta su elenco
Per convertire un set in un elenco in Java, possiamo utilizzare il metodo 'addAll' della classe list. Questo metodo copia il contenuto dell'insieme o qualsiasi raccolta fornita come argomento nell'elenco che richiama il metodo addAll.
Il programma Java di seguito converte il set in un ArrayList.
a cosa serve la programmazione c ++
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); } }
Produzione:
Il contenuto dell'insieme: (quattro, uno, due, tre, cinque)
The ArrayList dal set: (quattro, uno, due, tre, cinque)
Elenco da impostare
Per convertire l'elenco dato come ArrayList in un set in Java, passiamo l'oggetto list come argomento al costruttore del set.
Il seguente programma Java implementa questa conversione.
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); } }
Produzione:
The ArrayList: (uno, due, tre, quattro, cinque)
Il set ottenuto da ArrayList: (quattro, uno, due, tre, cinque)
Ordina un set in Java
La raccolta Set in Java non ha un metodo diretto di ordinamento. Quindi dobbiamo seguire alcuni approcci indiretti per ordinare o ordinare i contenuti dell'oggetto impostato. Tuttavia, esiste un'eccezione nel caso in cui l'oggetto set sia un TreeSet.
L'oggetto TreeSet per impostazione predefinita fornisce il set ordinato. Quindi, se ci piace l'insieme ordinato di elementi, dovremmo scegliere TreeSet. Per HashSet o LinkedHashSet oggetti, possiamo convertire il set in List. Ordinare l'elenco utilizzando il metodo Collections.sort () e quindi riconvertire l'elenco in set.
Questo approccio è mostrato nel seguente programma Java.
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); } }
Produzione:
Set indifferenziato: (4, 8, 6, 2, 12, 10, 62, 40, 36)
Set ordinati: (2, 4, 6, 8, 10, 12, 36, 40, 62)
Elenco vs impostato in Java
Discutiamo alcune delle differenze tra un elenco e un set.
Elenco | Impostato |
---|---|
Sono consentiti valori nulli. | È consentito un solo valore nullo. |
Interfaccia dell'elenco degli attrezzi. | Implementa l'interfaccia del set. |
Contiene una classe legacy, Vector. | Nessuna classe legacy. |
ArrayList, LinkedList è implementazioni dell'interfaccia elenco. | HashSet, TreeSet, LinkedHashSet sono implementazioni di Set. |
Una sequenza ordinata di elementi. | Una raccolta non ordinata di elementi distinti. |
Consente duplicati. | Non sono consentiti duplicati. |
In grado di accedere agli elementi secondo la posizione dell'elemento. | Nessun accesso posizionale. |
Nuovi metodi definiti in un'interfaccia List. | Nessun nuovo metodo definito nell'interfaccia Set. I metodi dell'interfaccia di raccolta devono essere utilizzati con le sottoclassi Set. |
Può essere spostato in avanti e indietro utilizzando ListIterator. | Può essere attraversato solo in avanti con Iterator. |
Domande frequenti
D # 1) Che cos'è un set in Java?
Risposta: Un set è una raccolta non ordinata di elementi unici e in genere modella il concetto di Set in matematica.
Set è un'interfaccia che estende l'interfaccia Collection. Contiene i metodi che eredita dall'interfaccia Collection. L'interfaccia impostata aggiunge solo una restrizione, ovvero non dovrebbero essere consentiti duplicati.
Q # 2)Il set è ordinato in Java?
Risposta: No. Java Set non è ordinato. Non fornisce anche l'accesso posizionale.
Q # 3)Un set può contenere duplicati?
Risposta: Un set è una raccolta di elementi unici, non può avere duplicati.
Q # 4)Java Set è iterabile?
Risposta: Sì. L'interfaccia set implementa un'interfaccia Iterable e quindi set può essere attraversato o iterato utilizzando un ciclo forEach.
Q # 5)È consentito NULL nel set?
Risposta: Un set consente un valore null ma al massimo un valore null è consentito nelle implementazioni di set come HashSet e LinkedHashSet. Nel caso di TreeSet, genera un'eccezione di runtime se viene specificato il valore null.
Conclusione
In questo tutorial, abbiamo discusso i concetti generali e l'implementazione relativa all'interfaccia Set in Java.
L'interfaccia impostata non dispone di nuovi metodi definiti, ma utilizza i metodi dell'interfaccia del servizio di raccolta e aggiunge solo l'implementazione per impedire i valori duplicati. L'insieme consente al massimo un valore nullo.
Nei nostri tutorial successivi, discuteremo di implementazioni specifiche dell'interfaccia Set come HashSet e TreeSet.
=> Visita qui per imparare Java da zero.
Lettura consigliata
- Tutorial Java Reflection con esempi
- Tutorial JAVA per principianti: oltre 100 tutorial video Java pratici
- Tutorial sul metodo Java String contains () con esempi
- Jagged Array in Java - Tutorial con esempi
- Tutorial di classe per scanner Java con esempi
- Tutorial sulla lunghezza di array Java con esempi di codice
- Tutorial Java String | Metodi Java String con esempi
- Cos'è Java Vector | Tutorial Java Vector Class con esempi