set interface java
Acest tutorial Java Set explică totul despre setarea interfeței în Java. Acoperă modul de a itera printr-un set, set metode, implementare, setat pe listă etc.:
Setat în Java este o interfață care face parte din Java Collection Framework și implementează interfața Collection. O colecție de seturi oferă caracteristicile unui set matematic.
Un set poate fi definit ca o colecție de obiecte neordonate și nu poate conține valori duplicate. Deoarece interfața setată moștenește interfața de colectare, aceasta implementează toate metodele interfeței de colectare.
=> Consultați aici Ghidul perfect de instruire Java.
Ce veți învăța:
Set Java
Interfața setată este implementată pe clase și interfețe așa cum se arată în diagrama de mai jos.
Așa cum se arată în diagrama de mai sus, interfața Set este moștenită de clase, HashSet, TreeSet, LinkedHashSet și EnumSet. Interfețele SortedSet și NavigableSet implementează și interfața Set.
Unele dintre caracteristicile importante ale interfeței Set sunt date mai jos:
- Interfața setată face parte din Java Collections Framework.
- Interfața setată permite valori unice.
- Poate avea cel mult o valoare nulă.
- Java 8 oferă o metodă implicită pentru interfața setată - Spliterator.
- Interfața setată nu acceptă indexurile elementelor.
- Interfața setată acceptă generice.
Cum să creați un set?
Interfața setată în Java face parte din pachetul java.util. Pentru a include o interfață setată în program, trebuie să folosim una dintre următoarele declarații de import.
import java.util.*;
sau
import java.util.Set;
Odată ce funcționalitatea interfeței setului este inclusă în program, putem crea un set în Java folosind oricare dintre clasele de seturi (clase care implementează interfața seturilor) așa cum se arată mai jos.
Set colors_Set = new HashSet();
Putem apoi inițializa acest obiect set adăugând câteva elemente la acesta folosind metoda add.
colors_Set.add(“Red”); colors_Set.add(“Green”); colors_Set.add(“Blue”);
Set Exemplu În Java
Să implementăm un exemplu simplu în Java pentru a demonstra interfața 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); } }
Ieșire:
Conținutul setului: (Roșu, Cyan, Albastru, Magenta, Verde)
Set sortat după convertirea în TreeSet: (Albastru, Cyan, Verde, Magenta, Roșu)
Iterează prin Set în Java
Putem accesa fiecare dintre elementele unui set folosind diverse abordări. Vom discuta aceste abordări mai jos.
Folosind Iterator
Putem defini un iterator care să traverseze un obiect setat. Folosind acest iterator putem accesa fiecare element din set și îl putem procesa.
Următorul program Java demonstrează iterarea prin set și tipărește elementele setului.
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()+ ' '); } } }
Ieșire:
HashSet: (Bangaluru, Pune, Kolkata, Hyderabad)
Valori folosind Iterator:
Bangalore Pune Kolkata Hyderabad
Folosind bucla pentru fiecare
De asemenea, putem folosi bucla pentru fiecare pentru a accesa elementele dintr-un set. Aici vom itera prin set într-o buclă.
Următorul program demonstrează acest lucru.
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 + ' '); } } }
Ieșire:
HashSet: (Bangaluru, Pune, Kolkata, Hyderabad)
Setați conținutul folosind bucla forEach:
Bangalore Pune Kolkata Hyderabad
Folosind Java 8 Stream API
De asemenea, putem itera și accesa elemente set folosind Java 8 stream API. În acest sens, generăm un flux dintr-un set și apoi iterăm prin flux folosind bucla forEach.
Programul Java de mai jos demonstrează iterația setului folosind 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 + ' '); }); } }
Ieșire:
HashSet: (Bangaluru, Pune, Kolkata, Hyderabad)
Setați conținutul utilizând Java 8 stream API:
Bangalore Pune Kolkata Hyderabad
Set Metode API
Mai jos sunt prezentate metodele acceptate de interfața Set. Aceste metode efectuează operațiuni de bază cum ar fi adăugare, eliminare, conținut etc., împreună cu celelalte operații.
Exemplu de tabel hash c ++
Metodă | Metoda prototip | Descriere |
---|---|---|
este gol | boolean isEmpty () | Verifică dacă setul este gol |
adăuga | add boolean (E e) | Adaugă elementul e la set dacă nu este prezent în set |
adaugă totul | boolean addAll (Colecția c) | Adaugă elementul colecției c setului. |
elimina | eliminare booleană (Obiectul o) | Șterge elementul dat o din set. |
inlătură tot | boolean removeAll (Colecția c) | Elimină elementele prezente în colecția dată c din set. |
conține | boolean conține (Obiectul o) | Verifică dacă elementul dat o este prezent în set. Returnează adevărat dacă da. |
conțineToate | boolean conține All (Colecția c) | Verifică dacă setul conține toate elementele din colecția specificată; Returnează adevărat dacă da. |
keepAll | boolean retainAll (Colecția c) | Setul păstrează toate elementele din colecția dată c |
clar | gol clar () | Șterge setul ștergând toate elementele din set |
iterator | Iterator iterator () | Folosit pentru a obține iteratorul pentru set |
toArray | Obiect () toArray () | Convertește setul în reprezentarea matricei care conține toate elementele din set. |
mărimea | int size () | Returnează numărul total de elemente sau dimensiunea setului. |
hashCode | hashCode () | Returnează codul hash al setului. |
Acum, să implementăm câteva dintre metodele pe care le-am discutat mai sus într-un program Java. Vom vedea, de asemenea, următoarele operații specifice care implică două seturi.
Setați implementarea în Java
Intersecție: Păstrăm valori comune între cele două seturi. Efectuăm o intersecție folosind keepAll metodă.
Uniune: Aici combinăm cele două seturi. Acest lucru se face cu adaugă totul metodă.
Diferență: Această operație elimină un set de celălalt. Această operație se efectuează folosind inlătură tot metodă.
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); } }
Ieșire:
Set original (numSet): (1, 2, 3, 4, 20, 6, 7, 8, 9, 11, 12, 13)
numSet Dimensiune: 12
Conținut OddSet: (1, 3, 5, 7, 9)
numSet conține elementul 2: adevărat
numSet conține colecția oddset: false
Intersecția numSet & oddSet: (1, 3, 7, 9)
Diferența numSet & oddSet: (2, 4, 6, 8, 11, 12, 13, 20)
Uniunea numSet & oddSet: (1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 20)
Setați la matrice
Am văzut metoda „toArray” în secțiunea de mai sus privind metodele. Această metodă toArray poate fi utilizată pentru a converti setul într-un Array.
Programul Java de mai jos convertește Setul într-o matrice.
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)); } }
Ieșire:
Conținutul setului: (Roșu, Cyan, Albastru, Magenta, Verde)
Set convertit în matrice: (Roșu, Cyan, Albastru, Magenta, Verde)
Array To Set
Pentru a converti o matrice într-un set în Java, putem urma două abordări așa cum se arată mai jos.
# 1) Putem converti matricea într-o listă folosind metoda asList și apoi să trecem această listă ca argument către constructorul setului. Acest lucru duce la crearea obiectului setat cu elementele matricei.
#Două) Alternativ, putem folosi metoda Collections.addAll pentru a copia elementele matricei în obiectul setat.
Programul Java de mai jos implementează ambele abordări pentru a converti o matrice de setat.
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); } }
Ieșire:
Matricea de intrare: (10, 50, 40, 20, 60, 30, 80, 70)
Array convertit în set prin asList: (80, 50, 20, 70, 40, 10, 60, 30)
Tablou convertită în set folosind Collections.addAll: (80, 50, 20, 70, 40, 10, 60, 30)
Setați la listă
Pentru a converti setul într-o listă în Java, putem folosi metoda „addAll” din clasa listei. Această metodă copiază conținutul setului sau orice colecție furnizată ca argument în lista care invocă metoda addAll.
Programul Java de mai jos convertește setul într-o 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); } }
Ieșire:
Conținutul setului: (patru, unu, doi, trei, cinci)
ArrayList din set: (patru, unu, doi, trei, cinci)
Lista de setat
Pentru a converti lista dată ca ArrayList într-un set în Java, trecem obiectul listă ca argument către constructorul setului.
Următorul program Java implementează această conversie.
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); } }
Ieșire:
Lista Array: (unul, doi, trei, patru, cinci)
Setul obținut din ArrayList: (patru, unu, doi, trei, cinci)
matrici și funcții c ++
Sortează un set în Java
Colecția Set în Java nu are o metodă directă de sortare. Deci, trebuie să urmăm câteva abordări indirecte pentru sortarea sau ordonarea conținutului obiectului setat. Cu toate acestea, există o excepție în cazul în care obiectul setat este un TreeSet.
Obiectul TreeSet implicit furnizează setul ordonat. Prin urmare, dacă suntem dornici de setul de elemente ordonate, ar trebui să mergem pentru TreeSet. Pentru HashSet sau obiecte LinkedHashSet, putem converti setul în Listă. Sortați lista folosind metoda Collections.sort () și apoi convertiți lista înapoi la set.
Această abordare este prezentată în programul Java de mai jos.
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); } }
Ieșire:
Set nesortat: (4, 8, 6, 2, 12, 10, 62, 40, 36)
Set sortat: (2, 4, 6, 8, 10, 12, 36, 40, 62)
Lista Vs setate în Java
Să discutăm câteva dintre diferențele dintre o listă și un set.
Listă | A stabilit |
---|---|
Sunt permise valori nule. | Este permisă o singură valoare nulă. |
Interfață Lista de implementări. | Implementează interfața Set. |
Conține o clasă Legacy, Vector. | Fără ore vechi. |
ArrayList, LinkedList este implementarea interfeței List. | HashSet, TreeSet, LinkedHashSet sunt implementări Set. |
O succesiune ordonată de elemente. | O colecție neordonată de elemente distincte. |
Permite duplicate. | Nu sunt permise duplicate. |
Capabil să acceseze elemente conform poziției elementului. | Fără acces pozițional. |
Metode noi definite într-o interfață Listă. | Nu există metode noi definite în interfața Set. Metodele de interfață de colectare trebuie folosite cu subclasele Set. |
Poate fi parcurs în direcția înainte și înapoi folosind ListIterator. | Poate fi parcurs numai în direcția înainte cu Iterator. |
întrebări frecvente
Q # 1) Ce este un set în Java?
Răspuns: Un set este o colecție neordonată de elemente unice și modelează de obicei conceptul de Set în matematică.
Set este o interfață care extinde interfața Colecție. Conține metodele pe care le moștenește din interfața Colecție. Interfața setată adaugă doar o restricție, adică nu ar trebui permise duplicate.
Q # 2)Setul este comandat în Java?
Răspuns: Nu. Setul Java nu este comandat. Nu oferă și acces pozițional.
Q # 3)Un set poate conține duplicate?
Răspuns: Un set este o colecție de elemente unice, nu poate avea duplicate.
Q # 4)Java Set este iterabil?
Răspuns: Da. Interfața set implementează o interfață Iterable și astfel setul poate fi parcurs sau iterat folosind o buclă forEach.
Q # 5)NULL este permis în set?
Răspuns: Un set permite valoarea nulă, dar cel mult o valoare nulă este permisă în implementările setului, cum ar fi HashSet și LinkedHashSet. În cazul TreeSet, aruncă o excepție de runtime dacă este specificat nulul.
Concluzie
În acest tutorial, am discutat conceptele generale și implementarea legate de setarea interfeței în Java.
Interfața setată nu are metode noi definite, dar folosește metodele interfeței Collector și adaugă implementarea doar pentru a interzice valorile duplicate. Setul permite cel mult o valoare nulă.
În tutorialele noastre ulterioare, vom discuta despre implementările specifice ale interfeței Set, cum ar fi HashSet și TreeSet.
=> Vizitați aici pentru a afla Java de la zero.
Lectură recomandată
- Tutorial de reflecție Java cu exemple
- Tutorial JAVA pentru începători: peste 100 de cursuri video Java practice
- Șirul Java conține () Tutorial metodă cu exemple
- Matrice Jagged în Java - Tutorial cu exemple
- Tutorial de clasă Java Scanner cu exemple
- Tutorial Java Lungime matrice cu exemple de cod
- Tutorial Java String | Metode Java String cu exemple
- Ce este Java Vector | Tutorial Java Vector Class cu exemple