Nastavené rozhraní je přítomno v balíčku java.util a rozšiřuje Rozhraní sběru . Je to neuspořádaná kolekce objektů, do kterých nelze uložit duplicitní hodnoty. Je to rozhraní, které implementuje matematickou množinu. Toto rozhraní obsahuje metody zděděné z rozhraní kolekce a přidává funkci, která omezuje vkládání duplicitních prvků. Existují dvě rozhraní, která rozšiřují implementaci sady, a to SortedSet a NavigableSet.

Na obrázku výše navigační sada rozšiřuje rozhraní tříděné sady. Protože sada neuchovává pořadí vložení, rozhraní navigovatelné sady poskytuje implementaci pro navigaci v sadě. Třída, která implementuje navigační sadu, je TreeSet, což je implementace samovyvažujícího stromu. Proto nám toto rozhraní poskytuje způsob, jak procházet tímto stromem.
Prohlášení: Rozhraní Set je deklarováno jako:
public interface Set extends Collection>
Vytváření objektů sady
Protože Set je an rozhraní , objekty nelze vytvořit sazbou. K vytvoření objektu vždy potřebujeme třídu, která tento seznam rozšiřuje. A také po zavedení Generika v Javě 1.5 je možné omezit typ objektu, který lze uložit do sady. Tuto typově bezpečnou sadu lze definovat jako:
// Obj is the type of the object to be stored in Set Set set = new HashSet ();>
Pojďme diskutovat o metodách přítomných v rozhraní Set uvedeném níže v tabulkovém formátu níže takto:
| Metoda | Popis |
|---|---|
| přidat (prvek) | Tato metoda se používá k přidání konkrétního prvku do sady. Funkce přidá prvek pouze v případě, že zadaný prvek již není přítomen v množině, jinak funkce vrátí hodnotu False, pokud je prvek již v sadě přítomen. |
| addAll(kolekce) | Tato metoda se používá k připojení všech prvků ze zmíněné kolekce k existující sadě. Prvky se přidávají náhodně, aniž by se řídily konkrétním pořadím. |
| Průhledná() | Tato metoda se používá k odstranění všech prvků ze sady, ale nikoli k odstranění sady. Odkaz na sadu stále existuje. |
| obsahuje (prvek) | Tato metoda se používá ke kontrole, zda je určitý prvek přítomen v sadě nebo ne. |
| obsahuje vše (kolekce) | Tato metoda se používá ke kontrole, zda sada obsahuje všechny prvky přítomné v dané kolekci nebo ne. Tato metoda vrátí hodnotu true, pokud sada obsahuje všechny prvky, a vrátí hodnotu false, pokud některý z prvků chybí. |
| hashCode() | Tato metoda se používá k získání hodnoty hashCode pro tuto instanci sady. Vrací celočíselnou hodnotu, což je hodnota hashCode pro tuto instanci sady. |
| je prázdný() | Tato metoda se používá ke kontrole, zda je sada prázdná nebo ne. |
| iterátor() | Tato metoda se používá k vrácení iterátor souboru. Prvky ze sady se vracejí v náhodném pořadí. |
| odstranit (prvek) | Tato metoda se používá k odstranění daného prvku ze sady. Tato metoda vrátí hodnotu True, pokud je zadaný prvek přítomen v sadě, jinak vrátí hodnotu False. |
| odstranit vše (kolekce) | Tato metoda se používá k odstranění všech prvků z kolekce, které jsou přítomny v sadě. Tato metoda vrátí hodnotu true, pokud se tato sada v důsledku volání změnila. |
| zachovat vše (kolekce) | Tato metoda slouží k zachování všech prvků ze sady, které jsou v dané kolekci uvedeny. Tato metoda vrátí hodnotu true, pokud se tato sada v důsledku volání změnila. |
| velikost() | Tato metoda se používá k získání velikosti sady. To vrátí celočíselnou hodnotu, která označuje počet prvků. |
| toArray() | Tato metoda se používá k vytvoření pole stejných prvků jako sada. |
Ilustrace: Ukázkový program pro ilustraci Set rozhraní
Jáva
// 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ýstup
[Set, Example, Geeks, For]>
Operace na rozhraní Set
Rozhraní sady umožňuje uživatelům provádět základní matematické operace na sadě. Vezměme si dvě pole, abychom porozuměli těmto základním operacím. Nechť množina1 = [1, 3, 2, 4, 8, 9, 0] a množina2 = [1, 3, 7, 5, 4, 0, 7, 5]. Potom možné operace na množinách jsou:
1. Křižovatka: Tato operace vrátí všechny společné prvky z daných dvou množin. Pro obě výše uvedené sady by průsečík byl:
Intersection = [0, 1, 3, 4]>
2. Unie: Tato operace přidá všechny prvky v jedné sadě k druhé. Pro výše uvedené dvě sady by unie byla:
Union = [0, 1, 2, 3, 4, 5, 7, 8, 9]>
3. Rozdíl: Tato operace odstraní všechny hodnoty přítomné v jedné sadě z druhé sady. Pro výše uvedené dvě sady by rozdíl byl:
Difference = [2, 8, 9]>
Nyní implementujme následující operace, jak je definováno výše takto:
Příklad:
Jáva
// 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);> >}> }> |
char + int v jazyce Java
>
>Výstup
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]>
Provádění různých operací na SortedSet
Po zavedení Generika v Javě 1.5 je možné omezit typ objektu, který lze uložit do sady. Protože Set je rozhraní, lze jej použít pouze s třídou, která toto rozhraní implementuje. HashSet je jednou z široce používaných tříd, která implementuje rozhraní Set. Nyní se podívejme, jak provést několik často používaných operací na HashSet. Provedeme následující operace:
- Přidávání prvků
- Přístupové prvky
- Odstraňování prvků
- Iterační prvky
- Iterace přes Set
Nyní proberme tyto operace jednotlivě takto:
Operace 1: Přidávání prvků
Abychom přidali prvek do sady, můžeme použít metoda add(). . Objednávka vložení však není v sadě zachována. Interně se pro každý prvek vygeneruje hash a hodnoty se uloží s ohledem na vygenerovaný hash. hodnoty jsou porovnány a seřazeny ve vzestupném pořadí. Musíme si uvědomit, že duplicitní prvky nejsou povoleny a všechny duplicitní prvky jsou ignorovány. Sada také přijímá hodnoty Null.
Příklad
Jáva
// 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);> >}> }> |
>
>
konstruktor v JavěVýstup
[A, B, C]>
Operace 2: Přístup k prvkům
Po přidání prvků, pokud chceme k prvkům přistupovat, můžeme použít vestavěné metody jako obsahuje() .
Příklad
Jáva
// 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ýstup
Set is [A, B, C] Contains D false>
Operace 3: Odstranění hodnot
Hodnoty lze ze sady odstranit pomocí metody remove() .
Příklad
Jáva
// 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ýstup
Initial HashSet [A, B, C, D, E] After removing element [A, C, D, E]>
Operace 4: Iterace přes sadu
Existují různé způsoby iterace sady. Nejznámější z nich je použití vylepšené smyčky for.
Příklad
Jáva
// 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();> >}> }> |
>
>Výstup
A, B, C, D, E,>
Třídy, které implementují rozhraní Set v kolekcích Java, lze snadno rozpoznat z níže uvedeného obrázku a jsou uvedeny takto:
- HashSet
- EnumSet
- LinkedHashSet
- TreeSet
Třída 1: HashSet
Třída HashSet, která je implementována v sbírkový rámec je vlastní implementací Příklad
Jáva
// 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());> >}> }> |
>
verze pro Android
>Výstup
[South Africa, Australia, India] Set after removing Australia:[South Africa, India] Iterating over set: South Africa India>
Třída 2: EnumSet
Třída EnumSet, která je implementována v rámec sbírek je jednou ze specializovaných implementací rozhraní Set pro použití s typ výčtu . Je to vysoce výkonná implementace sady, mnohem rychlejší než HashSet. Všechny prvky v sadě výčtu musí pocházet z jediného výčtového typu, který je zadán při explicitním nebo implicitním vytvoření sady. Podívejme se, jak pomocí této třídy vytvořit objekt sady.
Příklad
Jáva
// 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ýstup
Set 1: [CODE, LEARN, CONTRIBUTE, QUIZ]>
Třída 3: LinkedHashSet
Třída LinkedHashSet, která je implementována v rámec sbírek je uspořádaná verze HashSet, která udržuje dvojitě propojený seznam napříč všemi prvky. Když je potřeba zachovat pořadí iterací, použije se tato třída. Při iteraci přes HashSet je pořadí nepředvídatelné, zatímco LinkedHashSet nám umožňuje iterovat prvky v pořadí, ve kterém byly vloženy. Podívejme se, jak pomocí této třídy vytvořit objekt sady.
Příklad
Jáva
// 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());> >}> }> |
>
>Výstup
[India, Australia, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa>
Třída 4: TreeSet
Třída TreeSet, která je implementována v rámec sbírek a implementace rozhraní SortedSet a SortedSet rozšiřuje rozhraní Set. Chová se jako jednoduchá sada s tou výjimkou, že ukládá prvky v seřazeném formátu. TreeSet používá pro ukládání stromovou datovou strukturu. Objekty jsou uloženy ve vzestupném pořadí. Ale můžeme iterovat v sestupném pořadí pomocí metody TreeSet.descendingIterator(). Podívejme se, jak pomocí této třídy vytvořit objekt sady.
Příklad
Jáva
// 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ýstup
[Australia, India, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa>