logo

Nastavené v jazyku Java

Nastavené rozhranie je prítomné v balíku java.util a rozširuje Rozhranie zberu . Je to neusporiadaná kolekcia objektov, do ktorej nie je možné uložiť duplicitné hodnoty. Je to rozhranie, ktoré implementuje matematickú množinu. Toto rozhranie obsahuje metódy prevzaté z rozhrania kolekcie a pridáva funkciu, ktorá obmedzuje vkladanie duplicitných prvkov. Existujú dve rozhrania, ktoré rozširujú implementáciu sady, a to SortedSet a NavigableSet.



Na obrázku vyššie navigačná množina rozširuje rozhranie triedenej množiny. Keďže množina si neuchováva poradie vloženia, rozhranie navigačnej množiny poskytuje implementáciu na navigáciu v množine. Trieda, ktorá implementuje navigačnú množinu, je TreeSet, čo je implementácia samovyvažujúceho stromu. Preto nám toto rozhranie poskytuje spôsob, ako sa pohybovať v tomto strome.

Vyhlásenie: Rozhranie Set je deklarované ako:

public interface Set extends Collection>

Vytváranie objektov sady



Keďže Set je an rozhranie , objekty sa nedajú vytvoriť zo sady. Na vytvorenie objektu vždy potrebujeme triedu, ktorá tento zoznam rozširuje. A tiež po zavedení Generiká v Java 1.5 je možné obmedziť typ objektu, ktorý je možné uložiť do Setu. Túto typovo bezpečnú súpravu možno definovať ako:

// Obj is the type of the object to be stored in Set Set set = new HashSet ();>

Poďme diskutovať o metódach prítomných v rozhraní Set uvedenom nižšie v tabuľkovom formáte nižšie takto:

Metóda Popis
pridať (prvok) Táto metóda sa používa na pridanie konkrétneho prvku do sady. Funkcia pridá prvok iba vtedy, ak sa zadaný prvok ešte nenachádza v množine, inak funkcia vráti hodnotu False, ak sa prvok už v množine nachádza.
addAll(kolekcia) Táto metóda sa používa na pripojenie všetkých prvkov z uvedenej kolekcie k existujúcej množine. Prvky sa pridávajú náhodne bez toho, aby sa dodržali konkrétne poradie.
jasný() Táto metóda sa používa na odstránenie všetkých prvkov zo sady, ale nie na odstránenie sady. Odkaz na súpravu stále existuje.
obsahuje (prvok) Táto metóda sa používa na kontrolu, či je konkrétny prvok prítomný v množine alebo nie.
obsahuje všetko (kolekcia) Táto metóda sa používa na kontrolu, či sada obsahuje všetky prvky prítomné v danej kolekcii alebo nie. Táto metóda vráti hodnotu true, ak množina obsahuje všetky prvky, a vráti hodnotu false, ak niektorý z prvkov chýba.
hashCode() Táto metóda sa používa na získanie hodnoty hashCode pre túto inštanciu sady. Vráti celočíselnú hodnotu, ktorá je hodnotou hashCode pre túto inštanciu sady.
je prázdny() Táto metóda sa používa na kontrolu, či je sada prázdna alebo nie.
iterátor() Táto metóda sa používa na vrátenie iterátor súboru. Prvky zo sady sa vracajú v náhodnom poradí.
odstrániť (prvok) Táto metóda sa používa na odstránenie daného prvku zo sady. Táto metóda vráti hodnotu True, ak je zadaný prvok prítomný v množine, inak vráti hodnotu False.
odstrániť všetko (kolekcia) Táto metóda sa používa na odstránenie všetkých prvkov z kolekcie, ktoré sa nachádzajú v množine. Táto metóda vráti hodnotu true, ak sa táto množina zmenila v dôsledku volania.
ponechať všetko (kolekcia) Táto metóda sa používa na zachovanie všetkých prvkov zo sady, ktoré sú uvedené v danej kolekcii. Táto metóda vráti hodnotu true, ak sa táto množina zmenila v dôsledku volania.
veľkosť () Táto metóda sa používa na získanie veľkosti súpravy. Toto vráti celočíselnú hodnotu, ktorá označuje počet prvkov.
toArray() Táto metóda sa používa na vytvorenie poľa rovnakých prvkov, aké má sada.

Ilustrácia: Vzorový program na ilustráciu rozhrania Set



Java




// Java program Illustrating Set Interface> > // Importing utility classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> >// Demonstrating Set using HashSet> >// Declaring object of type String> >Set hash_Set =>new> HashSet();> > >// Adding elements to the Set> >// using add() method> >hash_Set.add(>'Geeks'>);> >hash_Set.add(>'For'>);> >hash_Set.add(>'Geeks'>);> >hash_Set.add(>'Example'>);> >hash_Set.add(>'Set'>);> > >// Printing elements of HashSet object> >System.out.println(hash_Set);> >}> }>

>

>

Výkon

[Set, Example, Geeks, For]>

Operácie na rozhraní Set

hĺbka algoritmu prvé vyhľadávanie

Rozhranie súpravy umožňuje používateľom vykonávať základné matematické operácie na súprave. Zoberme si dve polia, aby sme pochopili tieto základné operácie. Nech množina1 = [1, 3, 2, 4, 8, 9, 0] a množina2 = [1, 3, 7, 5, 4, 0, 7, 5]. Potom možné operácie na množinách sú:

1. Križovatka: Táto operácia vráti všetky spoločné prvky z daných dvoch množín. Pre vyššie uvedené dve množiny by priesečník bol:

Intersection = [0, 1, 3, 4]>

2. Únia: Táto operácia pridá všetky prvky v jednej sade k druhej. Pre vyššie uvedené dve sady by únia bola:

Union = [0, 1, 2, 3, 4, 5, 7, 8, 9]>

3. Rozdiel: Táto operácia odstráni všetky hodnoty prítomné v jednej sade z druhej sady. Pre vyššie uvedené dve sady by bol rozdiel:

Difference = [2, 8, 9]>

Teraz implementujme nasledujúce operácie definované vyššie takto:

Príklad:

Java




// Java Program Demonstrating Operations on the Set> // such as Union, Intersection and Difference operations> > // Importing all utility classes> import> java.util.*;> > // Main class> public> class> SetExample {> > >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an object of Set class> >// Declaring object of Integer type> >Set a =>new> HashSet();> > >// Adding all elements to List> >a.addAll(Arrays.asList(> >new> Integer[] {>1>,>3>,>2>,>4>,>8>,>9>,>0> }));> > >// Again declaring object of Set class> >// with reference to HashSet> >Set b =>new> HashSet();> > >b.addAll(Arrays.asList(> >new> Integer[] {>1>,>3>,>7>,>5>,>4>,>0>,>7>,>5> }));> > > >// To find union> >Set union =>new> HashSet(a);> >union.addAll(b);> >System.out.print(>'Union of the two Set'>);> >System.out.println(union);> > >// To find intersection> >Set intersection =>new> HashSet(a);> >intersection.retainAll(b);> >System.out.print(>'Intersection of the two Set'>);> >System.out.println(intersection);> > >// To find the symmetric difference> >Set difference =>new> HashSet(a);> >difference.removeAll(b);> >System.out.print(>'Difference of the two Set'>);> >System.out.println(difference);> >}> }>

>

>

Výkon

Union of the two Set[0, 1, 2, 3, 4, 5, 7, 8, 9] Intersection of the two Set[0, 1, 3, 4] Difference of the two Set[2, 8, 9]>

Vykonávanie rôznych operácií na SortedSet

Po zavedení Generiká v Java 1.5 je možné obmedziť typ objektu, ktorý je možné uložiť do Setu. Keďže Set je rozhranie, možno ho použiť iba s triedou, ktorá toto rozhranie implementuje. HashSet je jednou zo široko používaných tried, ktorá implementuje rozhranie Set. Teraz sa pozrime, ako vykonať niekoľko často používaných operácií na HashSet. Budeme vykonávať nasledujúce operácie takto:

  1. Pridávanie prvkov
  2. Prístupové prvky
  3. Odstraňovanie prvkov
  4. Iterujúce prvky
  5. Iterácia cez Set

Teraz poďme diskutovať o týchto operáciách jednotlivo takto:

Operácia 1: Pridávanie prvkov

Na pridanie prvku do Setu môžeme použiť metóda add(). . Objednávka vloženia sa však v Súprave nezachová. Interne sa pre každý prvok vygeneruje hash a hodnoty sa uložia vzhľadom na vygenerovaný hash. hodnoty sa porovnávajú a triedia vo vzostupnom poradí. Musíme si uvedomiť, že duplicitné prvky nie sú povolené a všetky duplicitné prvky sú ignorované. Sada tiež akceptuje hodnoty Null.

Príklad

Java




// Java Program Demonstrating Working of Set by> // Adding elements using add() method> > // Importing all utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating an object of Set and> >// declaring object of type String> >Set hs =>new> HashSet();> > >// Adding elements to above object> >// using add() method> >hs.add(>'B'>);> >hs.add(>'B'>);> >hs.add(>'C'>);> >hs.add(>'A'>);> > >// Printing the elements inside the Set object> >System.out.println(hs);> >}> }>

>

>

Výkon

vznášajúce sa v css
[A, B, C]>

Operácia 2: Prístup k prvkom

Po pridaní prvkov, ak chceme získať prístup k prvkom, môžeme použiť vstavané metódy ako obsahuje() .

Príklad

Java




// Java code to demonstrate Working of Set by> // Accessing the Elements of the Set object> > // Importing all utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating an object of Set and> >// declaring object of type String> >Set hs =>new> HashSet();> > >// Elements are added using add() method> >// Later onwards we will show accessing the same> > >// Custom input elements> >hs.add(>'A'>);> >hs.add(>'B'>);> >hs.add(>'C'>);> >hs.add(>'A'>);> > >// Print the Set object elements> >System.out.println(>'Set is '> + hs);> > >// Declaring a string> >String check =>'D'>;> > >// Check if the above string exists in> >// the SortedSet or not> >// using contains() method> >System.out.println(>'Contains '> + check +>' '> >+ hs.contains(check));> >}> }>

>

>

Výkon

Set is [A, B, C] Contains D false>

Operácia 3: Odstránenie hodnôt

Hodnoty je možné zo sady odstrániť pomocou metódy remove() .

Príklad

Java

java string join




// Java Program Demonstrating Working of Set by> // Removing Element/s from the Set> > // Importing all utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> >// Declaring object of Set of type String> >Set hs =>new> HashSet();> > >// Elements are added> >// using add() method> > >// Custom input elements> >hs.add(>'A'>);> >hs.add(>'B'>);> >hs.add(>'C'>);> >hs.add(>'B'>);> >hs.add(>'D'>);> >hs.add(>'E'>);> > >// Printing initial Set elements> >System.out.println(>'Initial HashSet '> + hs);> > >// Removing custom element> >// using remove() method> >hs.remove(>'B'>);> > >// Printing Set elements after removing an element> >// and printing updated Set elements> >System.out.println(>'After removing element '> + hs);> >}> }>

>

>

Výkon

Initial HashSet [A, B, C, D, E] After removing element [A, C, D, E]>

Operácia 4: Iterácia cez súpravu

Existujú rôzne spôsoby iterácie cez sadu. Najznámejším z nich je použitie vylepšenej slučky for.

Príklad

Java




// Java Program to Demonstrate Working of Set by> // Iterating through the Elements> > // Importing utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating object of Set and declaring String type> >Set hs =>new> HashSet();> > >// Adding elements to Set> >// using add() method> > >// Custom input elements> >hs.add(>'A'>);> >hs.add(>'B'>);> >hs.add(>'C'>);> >hs.add(>'B'>);> >hs.add(>'D'>);> >hs.add(>'E'>);> > >// Iterating through the Set> >// via for-each loop> >for> (String value : hs)> > >// Printing all the values inside the object> >System.out.print(value +>', '>);> > >System.out.println();> >}> }>

>

>

json v príklade json
Výkon

A, B, C, D, E,>

Triedy, ktoré implementujú rozhranie Set v kolekciách Java, možno ľahko vnímať z nižšie uvedeného obrázka a sú uvedené takto:

  • HashSet
  • EnumSet
  • LinkedHashSet
  • TreeSet

Trieda 1: HashSet

Trieda HashSet, ktorá je implementovaná v zberný rámec je inherentnou implementáciou Príklad

Java




// Java program Demonstrating Creation of Set object> // Using the Hashset class> > // Importing utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating object of Set of type String> >Set h =>new> HashSet();> > >// Adding elements into the HashSet> >// using add() method> > >// Custom input elements> >h.add(>'India'>);> >h.add(>'Australia'>);> >h.add(>'South Africa'>);> > >// Adding the duplicate element> >h.add(>'India'>);> > >// Displaying the HashSet> >System.out.println(h);> > >// Removing items from HashSet> >// using remove() method> >h.remove(>'Australia'>);> >System.out.println(>'Set after removing '> >+>'Australia:'> + h);> > >// Iterating over hash set items> >System.out.println(>'Iterating over set:'>);> > >// Iterating through iterators> >Iterator i = h.iterator();> > >// It holds true till there is a single element> >// remaining in the object> >while> (i.hasNext())> > >System.out.println(i.next());> >}> }>

>

>

Výkon

[South Africa, Australia, India] Set after removing Australia:[South Africa, India] Iterating over set: South Africa India>

Trieda 2: EnumSet

Trieda EnumSet, ktorá je implementovaná v rámec zbierok je jednou zo špecializovaných implementácií rozhrania Set na použitie s typ enumerácie . Je to vysoko výkonná implementácia sady, oveľa rýchlejšia ako HashSet. Všetky prvky v množine enumerácie musia pochádzať z jedného typu enumerácie, ktorý je špecifikovaný pri explicitnom alebo implicitnom vytvorení množiny. Pozrime sa, ako pomocou tejto triedy vytvoriť množinu objektu.

Príklad

Java




// Java program to demonstrate the> // creation of the set object> // using the EnumSet class> import> java.util.*;> > enum> Gfg { CODE, LEARN, CONTRIBUTE, QUIZ, MCQ }> ;> > public> class> GFG {> > >public> static> void> main(String[] args)> >{> >// Creating a set> >Set set1;> > >// Adding the elements> >set1 = EnumSet.of(Gfg.QUIZ, Gfg.CONTRIBUTE,> >Gfg.LEARN, Gfg.CODE);> > >System.out.println(>'Set 1: '> + set1);> >}> }>

>

>

Výkon

Set 1: [CODE, LEARN, CONTRIBUTE, QUIZ]>

Trieda 3: LinkedHashSet

Trieda LinkedHashSet, ktorá je implementovaná v rámec zbierok je usporiadaná verzia HashSet, ktorá udržiava dvojito prepojený zoznam vo všetkých prvkoch. Keď je potrebné zachovať poradie iterácií, použije sa táto trieda. Pri iterácii cez HashSet je poradie nepredvídateľné, zatiaľ čo LinkedHashSet nám umožňuje iterovať cez prvky v poradí, v akom boli vložené. Pozrime sa, ako vytvoriť množinu objektu pomocou tejto triedy.

Príklad

Java




// Java program to demonstrate the> // creation of Set object using> // the LinkedHashset class> import> java.util.*;> > class> GFG {> > >public> static> void> main(String[] args)> >{> >Set lh =>new> LinkedHashSet();> > >// Adding elements into the LinkedHashSet> >// using add()> >lh.add(>'India'>);> >lh.add(>'Australia'>);> >lh.add(>'South Africa'>);> > >// Adding the duplicate> >// element> >lh.add(>'India'>);> > >// Displaying the LinkedHashSet> >System.out.println(lh);> > >// Removing items from LinkedHashSet> >// using remove()> >lh.remove(>'Australia'>);> >System.out.println(>'Set after removing '> >+>'Australia:'> + lh);> > >// Iterating over linked hash set items> >System.out.println(>'Iterating over set:'>);> >Iterator i = lh.iterator();> >while> (i.hasNext())> >System.out.println(i.next());> >}> }>

tlačidlo tkinter

>

>

Výkon

[India, Australia, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa>

Trieda 4: TreeSet

Trieda TreeSet, ktorá je implementovaná v rámec zbierok a implementácia rozhrania SortedSet a SortedSet rozširuje rozhranie Set. Správa sa ako jednoduchá sada s tou výnimkou, že ukladá prvky v zoradenom formáte. TreeSet používa na ukladanie stromovú dátovú štruktúru. Objekty sú uložené vo vzostupnom poradí. Ale môžeme iterovať v zostupnom poradí pomocou metódy TreeSet.descendingIterator(). Pozrime sa, ako vytvoriť množinu objektu pomocou tejto triedy.

Príklad

Java




// Java Program Demonstrating Creation of Set object> // Using the TreeSet class> > // Importing utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating a Set object and declaring it of String> >// type> >// with reference to TreeSet> >Set ts =>new> TreeSet();> > >// Adding elements into the TreeSet> >// using add()> >ts.add(>'India'>);> >ts.add(>'Australia'>);> >ts.add(>'South Africa'>);> > >// Adding the duplicate> >// element> >ts.add(>'India'>);> > >// Displaying the TreeSet> >System.out.println(ts);> > >// Removing items from TreeSet> >// using remove()> >ts.remove(>'Australia'>);> >System.out.println(>'Set after removing '> >+>'Australia:'> + ts);> > >// Iterating over Tree set items> >System.out.println(>'Iterating over set:'>);> >Iterator i = ts.iterator();> > >while> (i.hasNext())> >System.out.println(i.next());> >}> }>

>

>

Výkon

[Australia, India, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa>