Ustawiony interfejs jest obecny w pakiecie java.util i stanowi rozszerzenie pakietu Interfejs kolekcji . Jest to nieuporządkowana kolekcja obiektów, w której nie można przechowywać zduplikowanych wartości. Jest to interfejs implementujący zbiór matematyczny. Interfejs ten zawiera metody odziedziczone z interfejsu Collection i dodaje funkcję ograniczającą wstawianie zduplikowanych elementów. Istnieją dwa interfejsy rozszerzające implementację zestawu, a mianowicie SortedSet i NavigableSet .

Na powyższym obrazku zestaw nawigacyjny stanowi rozszerzenie interfejsu zestawu posortowanego. Ponieważ zestaw nie zachowuje kolejności wstawiania, interfejs zestawu z możliwością nawigacji zapewnia implementację nawigacji po zestawie. Klasą implementującą zestaw nawigacyjny jest TreeSet, który jest implementacją drzewa samobalansującego. Dlatego ten interfejs umożliwia nam poruszanie się po tym drzewie.
Deklaracja: Interfejs Set jest zadeklarowany jako:
public interface Set extends Collection>
Tworzenie obiektów zestawu
Ponieważ Set jest interfejs , nie można tworzyć obiektów ze zbioru. Zawsze potrzebujemy klasy, która rozszerza tę listę, aby utworzyć obiekt. A także po wprowadzeniu Genetyki w Javie 1.5 możliwe jest ograniczenie typu obiektu, który może być przechowywany w zestawie. Ten zestaw bezpieczny dla typu można zdefiniować jako:
// Obj is the type of the object to be stored in Set Set set = new HashSet ();>
Omówmy metody obecne w interfejsie Set podanym poniżej w formie tabelarycznej poniżej:
| metoda | Opis |
|---|---|
| dodać (element) | Metoda ta służy do dodania konkretnego elementu do zbioru. Funkcja dodaje element tylko wtedy, gdy określony element nie znajduje się jeszcze w zestawie, w przeciwnym razie funkcja zwraca False, jeśli element jest już obecny w zestawie. |
| dodaj wszystko (kolekcja) | Metoda ta służy do dołączenia wszystkich elementów wspomnianej kolekcji do istniejącego zbioru. Elementy dodawane są losowo, bez zachowania określonej kolejności. |
| jasne() | Ta metoda służy do usunięcia wszystkich elementów ze zbioru, ale nie do usunięcia zbioru. Odniesienie do zestawu nadal istnieje. |
| zawiera (element) | Metoda ta służy do sprawdzenia, czy dany element występuje w Zestawie, czy też nie. |
| zawieraWszystko(kolekcja) | Metoda ta służy do sprawdzenia, czy zbiór zawiera wszystkie elementy występujące w danej kolekcji, czy też nie. Ta metoda zwraca wartość true, jeśli zestaw zawiera wszystkie elementy, i zwraca wartość false, jeśli brakuje któregokolwiek z elementów. |
| hashCode() | Ta metoda służy do uzyskania wartości hashCode dla tej instancji zestawu. Zwraca wartość całkowitą, która jest wartością hashCode dla tej instancji zestawu. |
| jest pusty() | Ta metoda służy do sprawdzania, czy zbiór jest pusty, czy nie. |
| iterator() | Ta metoda służy do zwracania iterator zestawu. Elementy zestawu zwracane są w losowej kolejności. |
| usuń (element) | Metoda ta służy do usunięcia danego elementu ze zbioru. Ta metoda zwraca True, jeśli określony element jest obecny w zestawie, w przeciwnym razie zwraca False. |
| usuń wszystko (kolekcja) | Metoda ta służy do usunięcia z kolekcji wszystkich elementów znajdujących się w zbiorze. Ta metoda zwraca wartość true, jeśli ten zestaw uległ zmianie w wyniku wywołania. |
| zachowaj wszystko (kolekcja) | Metoda ta służy do zachowania wszystkich elementów ze zbioru, które są wymienione w danej kolekcji. Ta metoda zwraca wartość true, jeśli ten zestaw uległ zmianie w wyniku wywołania. |
| rozmiar() | Ta metoda służy do uzyskania rozmiaru zestawu. Zwraca wartość całkowitą, która oznacza liczbę elementów. |
| do tablicy() | Ta metoda służy do tworzenia tablicy zawierającej te same elementy, co tablica Set. |
Ilustracja: Przykładowy program ilustrujący interfejs zestawu
Jawa
// 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);> >}> }> |
>
>Wyjście
[Set, Example, Geeks, For]>
Operacje na interfejsie Set
Interfejs zestawu pozwala użytkownikom na wykonanie podstawowych operacji matematycznych na zestawie. Aby zrozumieć te podstawowe operacje, weźmy dwie tablice. Niech set1 = [1, 3, 2, 4, 8, 9, 0] i set2 = [1, 3, 7, 5, 4, 0, 7, 5]. Zatem możliwe operacje na zbiorach to:
1. Przecięcie: Ta operacja zwraca wszystkie wspólne elementy z danych dwóch zestawów. Dla powyższych dwóch zbiorów przecięcie będzie wyglądało następująco:
Intersection = [0, 1, 3, 4]>
2. Unia: Ta operacja dodaje wszystkie elementy z jednego zestawu do drugiego. Dla powyższych dwóch zestawów związek będzie wyglądał następująco:
Union = [0, 1, 2, 3, 4, 5, 7, 8, 9]>
3. Różnica: Ta operacja usuwa wszystkie wartości obecne w jednym zestawie z drugiego zestawu. W przypadku powyższych dwóch zestawów różnica będzie następująca:
Difference = [2, 8, 9]>
Teraz zaimplementujmy następujące operacje zdefiniowane powyżej w następujący sposób:
Przykład:
Jawa
składnia git pull
// 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);> >}> }> |
>
>Wyjście
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]>
Wykonywanie różnych operacji na SortedSet
Po wprowadzeniu Genetyki w Javie 1.5 możliwe jest ograniczenie typu obiektu, który może być przechowywany w zestawie. Ponieważ Set jest interfejsem, można go używać tylko z klasą, która implementuje ten interfejs. HashSet to jedna z powszechnie używanych klas implementujących interfejs Set. Zobaczmy teraz, jak wykonać kilka często używanych operacji na zestawie HashSet. Wykonamy następujące operacje w następujący sposób:
- Dodawanie elementów
- Dostęp do elementów
- Usuwanie elementów
- Elementy iteracyjne
- Iterowanie po zestawie
Omówmy teraz te operacje indywidualnie w następujący sposób:
Operacje 1: Dodawanie elementów
Aby dodać element do Zestawu, możemy użyć metoda dodawania(). . Jednakże kolejność wstawiania nie jest zachowywana w zestawie. Wewnętrznie dla każdego elementu generowany jest skrót, a wartości są przechowywane w odniesieniu do wygenerowanego skrótu. wartości są porównywane i sortowane w kolejności rosnącej. Musimy pamiętać, że zduplikowane elementy są niedozwolone i wszystkie zduplikowane elementy są ignorowane. Ponadto zestaw akceptuje wartości Null.
Przykład
Jawa
// 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);> >}> }> |
>
>Wyjście
dotychczasowy ciąg konwertera
[A, B, C]>
Operacja 2: Dostęp do elementów
Jeśli po dodaniu elementów chcemy uzyskać do nich dostęp, możemy skorzystać z wbudowanych metod, takich jak opens() .
Przykład
Jawa
nieuporządkowana_mapa c++
// 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));> >}> }> |
>
>Wyjście
Set is [A, B, C] Contains D false>
Operacja 3: Usuwanie wartości
Wartości można usunąć z Set za pomocą metody usuwania().
Przykład
Jawa
// 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);> >}> }> |
>
>Wyjście
Initial HashSet [A, B, C, D, E] After removing element [A, C, D, E]>
Operacja 4: Iterowanie po zbiorze
Istnieją różne sposoby iteracji po zbiorze. Najbardziej znanym jest użycie ulepszonej pętli for.
Przykład
Jawa
// 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();> >}> }> |
>
>Wyjście
A, B, C, D, E,>
Klasy implementujące interfejs Set w kolekcjach Java można łatwo rozpoznać na poniższym obrazku i są one wymienione w następujący sposób:
- Zestaw skrótów
- Zestaw wyliczeniowy
- Połączony zestaw Hash
- Zestaw drzew
Klasa 1: Zestaw skrótów
HashSet klasy, która jest zaimplementowana w ramy kolekcji jest nieodłączną implementacją Przykład
Jawa
// 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());> >}> }> |
>
>Wyjście
[South Africa, Australia, India] Set after removing Australia:[South Africa, India] Iterating over set: South Africa India>
Klasa 2: Zestaw wyliczeniowy
EnumSet, która jest zaimplementowana w ramy kolekcji jest jedną ze specjalistycznych implementacji interfejsu Set do użytku z platformą typ wyliczeniowy . Jest to wysokowydajna implementacja zestawu, znacznie szybsza niż HashSet. Wszystkie elementy w zestawie wyliczeniowym muszą pochodzić z jednego typu wyliczeniowego, który jest określony podczas tworzenia zestawu jawnie lub niejawnie. Zobaczmy, jak utworzyć obiekt zestawu przy użyciu tej klasy.
Przykład
Jawa
stoi
// 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);> >}> }> |
>
>Wyjście
Set 1: [CODE, LEARN, CONTRIBUTE, QUIZ]>
Klasa 3: Połączony zestaw Hash
Klasa LinkedHashSet zaimplementowana w ramy kolekcji to uporządkowana wersja HashSet, która utrzymuje podwójnie połączoną listę we wszystkich elementach. Jeśli konieczne jest zachowanie kolejności iteracji, używana jest ta klasa. Podczas iteracji po zestawie HashSet kolejność jest nieprzewidywalna, podczas gdy LinkedHashSet pozwala nam iterować po elementach w kolejności, w jakiej zostały wstawione. Zobaczmy, jak utworzyć obiekt zestawu przy użyciu tej klasy.
Przykład
Jawa
// 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());> >}> }> |
wycinek tablicy Java
>
>Wyjście
[India, Australia, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa>
Klasa 4: Zestaw drzew
TreeSet, która jest zaimplementowana w ramy kolekcji oraz implementacja interfejsu SortedSet i SortedSet rozszerza interfejs Set. Zachowuje się jak prosty zestaw, z tą różnicą, że przechowuje elementy w posortowanym formacie. TreeSet wykorzystuje drzewiastą strukturę danych do przechowywania. Obiekty są przechowywane w posortowanej kolejności rosnącej. Możemy jednak iterować w kolejności malejącej, używając metody TreeSet.descendingIterator(). Zobaczmy, jak utworzyć obiekt zestawu przy użyciu tej klasy.
Przykład
Jawa
// 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());> >}> }> |
>
>Wyjście
[Australia, India, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa>