set interface java
Tento výukový program sady Java vysvetľuje všetko o rozhraní sady v jazyku Java. Poskytuje informácie o tom, ako iterovať pomocou množiny, metód množiny, implementácie, množiny, atď .:
Sada v prostredí Java je rozhranie, ktoré je súčasťou rámca Java Collection Framework a implementuje rozhranie Collection. Kolekcia súpravy poskytuje vlastnosti matematickej súpravy.
Sada môže byť definovaná ako kolekcia neusporiadaných objektov a nemôže obsahovať duplicitné hodnoty. Pretože nastavené rozhranie zdedí rozhranie Collection, implementuje všetky metódy rozhrania Collection.
=> Vyskúšajte Sprievodcu dokonalým školením Java tu.
Čo sa dozviete:
Sada Java
Nastavené rozhranie je implementované do tried a rozhraní, ako je znázornené na nasledujúcom diagrame.
Ako je zrejmé z vyššie uvedeného diagramu, rozhranie Set zdedili triedy, HashSet, TreeSet, LinkedHashSet a EnumSet. Rozhrania SortedSet a NavigableSet tiež implementujú rozhranie Set.
Niektoré z dôležitých charakteristík rozhrania súpravy sú uvedené nižšie:
- Nastavené rozhranie je súčasťou rámca Java Collections Framework.
- Nastavené rozhranie umožňuje jedinečné hodnoty.
- Môže mať najviac jednu nulovú hodnotu.
- Java 8 poskytuje predvolenú metódu pre nastavené rozhranie - Spliterator.
- Nastavené rozhranie nepodporuje indexy prvkov.
- Nastavené rozhranie podporuje všeobecné informácie.
Ako vytvoriť sadu?
Nastavené rozhranie v Jave je súčasťou balíka java.util. Na zahrnutie nastaveného rozhrania do programu musíme použiť jeden z nasledujúcich príkazov na import.
import java.util.*;
alebo
import java.util.Set;
Keď je program súčasťou funkčnosti nastaveného rozhrania, môžeme vytvoriť sadu v Jave pomocou ktorejkoľvek z tried tried (tried, ktoré implementujú rozhranie sady), ako je uvedené nižšie.
Set colors_Set = new HashSet();
Potom môžeme tento objekt množiny inicializovať pridaním niekoľkých prvkov k nemu pomocou metódy add.
colors_Set.add(“Red”); colors_Set.add(“Green”); colors_Set.add(“Blue”);
Nastaviť príklad v jazyku Java
Ukážme si jednoduchý príklad v Jave, ktorý demonštruje rozhranie 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); } }
Výkon:
Obsah sady: (Červená, Azúrová, Modrá, Purpurová, Zelená)
Zoradená sada po prevode na TreeSet: (modrá, azúrová, zelená, purpurová, červená)
Iterácia cez Set in Java
Ku každému z prvkov súpravy môžeme pristupovať pomocou rôznych prístupov. Tieto prístupy si rozoberieme nižšie.
Pomocou Iterátora
Môžeme definovať iterátor, ktorý bude prechádzať nastaveným objektom. Pomocou tohto iterátora môžeme získať prístup ku každému prvku v množine a spracovať ho.
Nasledujúci program Java demonštruje iteráciu cez množinu a tlačí prvky množiny.
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()+ ' '); } } }
Výkon:
HashSet: (Bangaluru, Pune, Kolkata, Hyderabad)
Hodnoty používajúce Iterator:
Bangalore Pune Kolkata Hyderabad
Používanie slučky For-each
Na prístup k prvkom v sade môžeme tiež použiť slučku for-each. Tu iterujeme cez množinu v slučke.
Nasledujúci program to demonštruje.
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 + ' '); } } }
Výkon:
HashSet: (Bangaluru, Pune, Kolkata, Hyderabad)
Nastavte obsah pomocou slučky forEach:
Bangalore Pune Kolkata Hyderabad
Používanie rozhrania Java 8 Stream API
Môžeme tiež iterovať a pristupovať k prvkom množiny pomocou rozhrania API Java 8 stream. V tomto generujeme prúd zo sady a potom ho iterujeme pomocou slučky forEach.
Program Java nižšie demonštruje iteráciu sady pomocou rozhrania API Java 8 stream.
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 + ' '); }); } }
Výkon:
HashSet: (Bangaluru, Pune, Kolkata, Hyderabad)
Nastaviť obsah pomocou rozhrania Java 8 stream API:
Bangalore Pune Kolkata Hyderabad
Set Methods API
Ďalej sú uvedené metódy podporované rozhraním Set. Tieto metódy vykonávajú základné operácie ako pridanie, odstránenie, obsahuje atď. Spolu s ostatnými operáciami.
najlepší softvér na čistenie pc 2015
Metóda | Metóda Prototyp | Popis |
---|---|---|
je prázdny | boolean isEmpty () | Skontroluje, či je súprava prázdna |
pridať | boolovský prírastok (E e) | Pridá prvok e do množiny, ak sa v množine nenachádza |
pridať všetko | boolean addAll (kolekcia c) | Pridá prvok kolekcie c do množiny. |
odstrániť | boolean remove (Objekt o) | Vymaže daný prvok o z množiny. |
odobrať všetky | boolean removeAll (kolekcia c) | Odstráni zo sady prvky prítomné v danej kolekcii c. |
obsahuje | boolean obsahuje (Objekt o) | Skontroluje, či je daný prvok o v množine. Ak áno, vráti hodnotu true. |
obsahujeVšetko | boolean containsAll (kolekcia c) | Skontroluje, či sada obsahuje všetky prvky v určenej kolekcii; Ak áno, vráti hodnotu true. |
keepAll | boolean keepAll (kolekcia c) | Sada zachováva všetky prvky v danej kolekcii c |
jasný | prázdne miesto jasné () | Vymaže súpravu odstránením všetkých prvkov zo súpravy |
iterátor | Iterátor iterátor () | Používa sa na získanie iterátora množiny |
toArray | Objekt () toArray () | Skonvertuje množinu na reprezentáciu poľa, ktorá obsahuje všetky prvky v množine. |
veľkosť | veľkosť int () | Vráti celkový počet prvkov alebo veľkosť množiny. |
hashCode | hashCode () | Vráti hashCode množiny. |
Teraz implementujme niektoré z metód, o ktorých sme hovorili vyššie, v programe Java. Uvidíme tiež nasledujúce konkrétne operácie, ktoré zahŕňajú dve sady.
Nastaviť implementáciu v Jave
Križovatka: Medzi týmito dvoma množinami zachovávame spoločné hodnoty. Križovatku vykonáme pomocou keepAll metóda.
Únia: Tu kombinujeme dve sady. To sa deje pomocou pridať všetko metóda.
Rozdiel: Táto operácia odstráni jednu sadu od druhej. Táto operácia sa vykonáva pomocou odobrať všetky metóda.
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); } }
Výkon:
Originálna sada (numSet): (1, 2, 3, 4, 20, 6, 7, 8, 9, 11, 12, 13)
numSet Veľkosť: 12
OddSet obsah: (1, 3, 5, 7, 9)
numSet obsahuje prvok 2: true
numSet obsahuje kolekciu oddset: false
Priesečník numSet a oddSet: (1, 3, 7, 9)
Rozdiel numSet & oddSet: (2, 4, 6, 8, 11, 12, 13, 20)
Union of the numSet & oddSet: (1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 20)
Nastavené na pole
Metódu ‘toArray‘ sme videli v predchádzajúcej časti o metódach. Touto metódou toArray je možné previesť množinu na pole.
Nižšie uvedený program Java prevádza súpravu na pole.
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)); } }
Výkon:
Obsah sady: (Červená, Azúrová, Modrá, Purpurová, Zelená)
Sada prevedená na pole: (červená, azúrová, modrá, purpurová, zelená)
Pole na nastavenie
Ak chcete previesť pole na množinu v prostredí Java, môžeme postupovať podľa dvoch prístupov, ako je uvedené nižšie.
# 1) Pole môžeme previesť na zoznam pomocou metódy asList a potom tento zoznam odovzdať ako argument konštruktoru množiny. To má za následok vytvorenie nastaveného objektu s prvkami poľa.
#dva) Prípadne môžeme použiť metódu Collections.addAll na skopírovanie prvkov poľa do nastaveného objektu.
Nižšie uvedený program Java implementuje obidva tieto prístupy na prevod poľa na množinu.
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); } }
Výkon:
Vstupné pole: (10, 50, 40, 20, 60, 30, 80, 70)
Pole sa prevedie na nastavenie pomocou asList: (80, 50, 20, 70, 40, 10, 60, 30)
Pole sa prevedie na množinu pomocou Collections.addAll: (80, 50, 20, 70, 40, 10, 60, 30)
Nastaviť na zoznam
Na prevedenie množiny do zoznamu v prostredí Java môžeme použiť metódu „addAll“ triedy zoznamu. Táto metóda skopíruje obsah množiny alebo ľubovoľnej kolekcie poskytnutej ako argument do zoznamu, ktorý vyvolá metódu addAll.
Nižšie uvedený program Java prevádza množinu na 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); } }
Výkon:
Obsah sady: (štyri, jedna, dva, tri, päť)
ArrayList z množiny: (štyri, jedna, dva, tri, päť)
Zoznam na nastavenie
Ak chcete previesť daný zoznam ako ArrayList na množinu v Jave, odovzdáme objekt zoznamu ako argument konštruktoru množiny.
nástroje na správu životného cyklu aplikácií s otvoreným zdrojovým kódom
Nasledujúci program Java implementuje túto konverziu.
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); } }
Výkon:
ArrayList: (jeden, dva, tri, štyri, päť)
Sada získaná z ArrayList: (štyri, jedna, dva, tri, päť)
Triediť množinu v Jave
Kolekcia Set v Jave nemá priamy spôsob triedenia. Musíme teda dodržať niektoré nepriame prístupy k triedeniu alebo zoradeniu obsahu nastaveného objektu. Existuje však výnimka v prípade, že nastaveným objektom je TreeSet.
Objekt TreeSet predvolene poskytuje usporiadanú množinu. Preto, ak sa zaujímame o usporiadanú sadu prvkov, mali by sme ísť o TreeSet. Pre HashSet alebo objekty LinkedHashSet, môžeme množinu previesť na Zoznam. Zoraďte zoznam pomocou metódy Collections.sort () a potom zoznam preveďte späť na nastavenie.
Tento prístup je uvedený v nižšie uvedenom programe 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); } }
Výkon:
Netriedená sada: (4, 8, 6, 2, 12, 10, 62, 40, 36)
Zoradená sada: (2, 4, 6, 8, 10, 12, 36, 40, 62)
Zoznam Vs nastavených v Jave
Poďme si predstaviť niektoré rozdiely medzi zoznamom a množinou.
Zoznam | Nastaviť |
---|---|
Nulové hodnoty sú povolené. | Povolená je iba jedna nulová hodnota. |
Rozhranie Zoznamu implementácií. | Implementuje rozhranie Set. |
Obsahuje triedu Legacy, Vector. | Žiadne staršie triedy. |
ArrayList, LinkedList je implementácia rozhrania zoznamu. | HashSet, TreeSet, LinkedHashSet sú implementácie Set. |
Radená postupnosť prvkov. | Neusporiadaná kolekcia výrazných prvkov. |
Umožňuje duplikáty. | Nie sú povolené žiadne duplikáty. |
Umožňuje prístup k prvkom podľa ich polohy. | Žiadny pozičný prístup. |
Nové metódy definované v rozhraní zoznamu. | V rozhraní Set nie sú definované žiadne nové metódy. Pri podtriedach Set sa majú používať metódy rozhrania kolekcie. |
Dá sa s nimi prechádzať vpred a vzad pomocou ListIterator. | Dá sa s ním prechádzať iba v smere dopredu pomocou Iterátora. |
často kladené otázky
Otázka č. 1) Čo je sada v prostredí Java?
Odpoveď: Sada je neusporiadaná zbierka jedinečných prvkov a typicky modeluje koncept množiny v matematike.
Sada je rozhranie, ktoré rozširuje rozhranie kolekcie. Obsahuje metódy, ktoré dedí z rozhrania Collection. Nastavené rozhranie iba pridáva obmedzenie, t. J. Duplikáty by nemali byť povolené.
Otázka č. 2)Je sada objednaná v Jave?
Odpoveď: Nie. Sada Java nie je objednaná. Neposkytuje tiež pozičný prístup.
Otázka č. 3)Môže sada obsahovať duplikáty?
Odpoveď: Sada je kolekcia jedinečných prvkov, nemôže obsahovať žiadne duplikáty.
Otázka č. 4)Je Java Set iterovateľný?
Odpoveď: Áno. Nastavené rozhranie implementuje Iterovateľné rozhranie, a preto je možné súbor prechádzať alebo opakovať pomocou slučky forEach.
Otázka č. 5)Je v súprave povolená hodnota NULL?
Odpoveď: Sada umožňuje nulovú hodnotu, ale v implementáciách sady ako HashSet a LinkedHashSet je povolená najviac jedna nulová hodnota. V prípade TreeSet vyvolá runtime výnimku, ak je zadaná null.
Záver
V tomto tutoriáli sme diskutovali o všeobecných konceptoch a implementácii týkajúcich sa Set interface v Jave.
Nastavené rozhranie nemá definované žiadne nové metódy, ale používa metódy rozhrania Collector a iba pridáva implementáciu, ktorá zakazuje duplicitné hodnoty. Sada umožňuje maximálne jednu nulovú hodnotu.
V našich ďalších tutoriáloch sa budeme zaoberať konkrétnymi implementáciami rozhrania Set, ako sú HashSet a TreeSet.
=> Navštívte tu a dozviete sa Java od začiatku.
Odporúčané čítanie
- Výukový program Java Reflection s príkladmi
- Výukový program JAVA pre začiatočníkov: viac ako 100 praktických výučbových programov Java Video
- Java String obsahuje () Výukový program metód s príkladmi
- Jagged Array In Java - návod s príkladmi
- Výukový program triedy skenerov Java s príkladmi
- Výukový program Java Array Length s príkladmi kódu
- Výukový program pre Java String Metódy reťazca Java s príkladmi
- Čo je Java Vector | Výukový program Java Vector Class s príkladmi