set interface java
Ten samouczek dotyczący zestawu Java wyjaśnia wszystko o interfejsie zestawu w języku Java. Obejmuje, jak iterować przez zestaw, metody ustawiania, implementację, ustawianie listy itp .:
Zestaw w języku Java to interfejs, który jest częścią Java Collection Framework i implementuje interfejs Collection. Kolekcja zestawów zapewnia cechy zestawu matematycznego.
Zestaw można zdefiniować jako zbiór nieuporządkowanych obiektów i nie może zawierać zduplikowanych wartości. Ponieważ interfejs set dziedziczy interfejs Collection, implementuje wszystkie metody interfejsu Collection.
=> Sprawdź idealny przewodnik szkoleniowy języka Java tutaj.
Czego się nauczysz:
Zestaw Java
Interfejs zestawu jest implementowany przez klasy i interfejsy, jak pokazano na poniższym diagramie.
Jak pokazano na powyższym diagramie, interfejs Set jest dziedziczony przez klasy, HashSet, TreeSet, LinkedHashSet i EnumSet. Interfejsy SortedSet i NavigableSet również implementują interfejs Set.
Poniżej podano niektóre ważne cechy interfejsu Set:
- Interfejs zestawu jest częścią struktury kolekcji Java.
- Interfejs zestawu pozwala na unikalne wartości.
- Może mieć co najwyżej jedną wartość null.
- Java 8 udostępnia domyślną metodę dla ustawionego interfejsu - Spliterator.
- Interfejs zestawu nie obsługuje indeksów elementów.
- Interfejs zestawu obsługuje typy generyczne.
Jak stworzyć zestaw?
Interfejs zestawu w Javie jest częścią pakietu java.util. Aby dołączyć zestaw interfejsu do programu, musimy użyć jednej z poniższych instrukcji importu.
import java.util.*;
lub
import java.util.Set;
Po włączeniu funkcji interfejsu zestawu do programu możemy utworzyć zestaw w Javie przy użyciu dowolnej z klas zestawu (klas, które implementują interfejs zestawu), jak pokazano poniżej.
Set colors_Set = new HashSet();
Następnie możemy zainicjować ten obiekt zestawu, dodając do niego kilka elementów za pomocą metody add.
colors_Set.add(“Red”); colors_Set.add(“Green”); colors_Set.add(“Blue”);
Ustaw przykład w Javie
Zaimplementujmy prosty przykład w Javie, aby zademonstrować interfejs 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); } }
Wynik:
Zawartość zestawu: (czerwony, cyjan, niebieski, magenta, zielony)
Zestaw posortowany po konwersji do zestawu TreeSet: (niebieski, cyjan, zielony, magenta, czerwony)
Iteruj przez zestaw w Javie
Możemy uzyskać dostęp do każdego z elementów zestawu przy użyciu różnych podejść. Omówimy te podejścia poniżej.
Korzystanie z Iteratora
Możemy zdefiniować iterator do przechodzenia przez ustawiony obiekt. Za pomocą tego iteratora możemy uzyskać dostęp do każdego elementu w zestawie i go przetworzyć.
Poniższy program w języku Java demonstruje iterację zestawu i wyświetla elementy zestawu.
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()+ ' '); } } }
Wynik:
HashSet: (Bangaluru, Pune, Kalkuta, Hyderabad)
Wartości używające Iteratora:
Bangalore Pune Kolkata Hyderabad
Korzystanie z pętli For-each
Możemy również użyć pętli for-each, aby uzyskać dostęp do elementów w zestawie. Tutaj iterujemy przez zestaw w pętli.
Pokazuje to poniższy program.
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 + ' '); } } }
Wynik:
HashSet: (Bangaluru, Pune, Kalkuta, Hyderabad)
Ustaw zawartość za pomocą pętli forEach:
Bangalore Pune Kolkata Hyderabad
Korzystanie z Java 8 Stream API
Możemy również iterować i uzyskiwać dostęp do elementów zestawu za pomocą strumieniowego API Java 8. W tym celu generujemy strumień z zestawu, a następnie iterujemy przez strumień przy użyciu pętli forEach.
Poniższy program w języku Java demonstruje iterację zestawu przy użyciu interfejsu API strumienia Java 8.
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 + ' '); }); } }
Wynik:
HashSet: (Bangaluru, Pune, Kalkuta, Hyderabad)
Ustaw zawartość za pomocą Java 8 Stream API:
Bangalore Pune Kolkata Hyderabad
Set Methods API
Poniżej podano metody obsługiwane przez interfejs Set. Te metody wykonują podstawowe operacje, takie jak dodawanie, usuwanie, zawiera itp. Wraz z innymi operacjami.
gdzie streamować anime za darmo
metoda | Prototyp metody | Opis |
---|---|---|
jest pusty | boolean isEmpty () | Sprawdza, czy zestaw jest pusty |
Dodaj | add boolean (E e) | Dodaje element e do zestawu, jeśli nie ma go w zestawie |
dodać wszystko | boolean addAll (kolekcja c) | Dodaje element kolekcji c do zestawu. |
usunąć | boolean remove (Object o) | Usuwa dany element o ze zbioru. |
Usuń wszystko | boolean removeAll (kolekcja c) | Usuwa elementy obecne w danej kolekcji c z zestawu. |
zawiera | boolean zawiera (obiekt o) | Sprawdza, czy dany element o jest obecny w zbiorze. Zwraca wartość true, jeśli tak. |
zawiera wszystko | boolean zawiera wszystko (kolekcja c) | Sprawdza, czy zestaw zawiera wszystkie elementy w określonej kolekcji; Zwraca wartość true, jeśli tak. |
retainAll | boolean retainAll (kolekcja c) | Zestaw zachowuje wszystkie elementy w danej kolekcji c |
jasny | void clear () | Czyści zestaw, usuwając wszystkie elementy z zestawu |
iterator | Iterator iterator () | Służy do uzyskiwania iteratora dla zestawu |
toArray | Obiekt () toArray () | Konwertuje zestaw na reprezentację tablicową, która zawiera wszystkie elementy w zestawie. |
rozmiar | rozmiar int () | Zwraca całkowitą liczbę elementów lub rozmiar zestawu. |
hashCode | hashCode () | Zwraca hashCode zestawu. |
Teraz zaimplementujmy niektóre z metod, które omówiliśmy powyżej, w programie Java. Zobaczymy również następujące konkretne operacje, które obejmują dwa zestawy.
Ustaw implementację w Javie
Skrzyżowanie: Zachowujemy wspólne wartości między dwoma zestawami. Przecięcie wykonujemy za pomocą retainAll metoda.
Unia: Tutaj łączymy oba zestawy. Odbywa się to za pomocą dodać wszystko metoda.
Różnica: Ta operacja usuwa jeden zestaw z drugiego. Ta operacja jest wykonywana przy użyciu Usuń wszystko metoda.
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); } }
Wynik:
Zestaw oryginalny (numSet): (1, 2, 3, 4, 20, 6, 7, 8, 9, 11, 12, 13)
NumSet Rozmiar: 12
Zawartość OddSet: (1, 3, 5, 7, 9)
numSet zawiera element 2: true
numSet zawiera kolekcję oddset: false
Część wspólna numSet i oddSet: (1, 3, 7, 9)
Różnica między numSet i 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)
Ustaw na tablicę
Metodę „toArray” widzieliśmy w powyższej sekcji dotyczącej metod. Ta metoda toArray może służyć do konwersji zestawu na Array.
Poniższy program Java konwertuje zestaw na tablicę.
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)); } }
Wynik:
Zawartość zestawu: (czerwony, cyjan, niebieski, magenta, zielony)
Zestaw przekonwertowany na Array: (czerwony, cyjan, niebieski, magenta, zielony)
Tablica do ustawienia
Aby przekonwertować tablicę na zestaw w Javie, możemy zastosować dwa podejścia, jak pokazano poniżej.
# 1) Możemy przekonwertować Array na List za pomocą metody asList, a następnie przekazać tę listę jako argument do konstruktora set. Powoduje to utworzenie obiektu zestawu z elementami tablicy.
#dwa) Alternatywnie możemy użyć metody Collections.addAll do skopiowania elementów tablicy do obiektu zestawu.
Poniższy program Java implementuje oba te podejścia do konwersji tablicy na zestaw.
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); } }
Wynik:
Tablica wejściowa: (10, 50, 40, 20, 60, 30, 80, 70)
Tablica przekonwertowana na zestaw przez asList: (80, 50, 20, 70, 40, 10, 60, 30)
Tablica przekonwertowana na zestaw przy użyciu Collections.addAll: (80, 50, 20, 70, 40, 10, 60, 30)
Ustaw jako listę
Aby przekonwertować zestaw na listę w Javie, możemy użyć metody „addAll” klasy list. Ta metoda kopiuje zawartość zestawu lub dowolnej kolekcji podanej jako argument do listy, która wywołuje metodę addAll.
Poniższy program Java konwertuje zestaw 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); } }
Wynik:
Zawartość zestawu: (cztery, jeden, dwa, trzy, pięć)
ArrayList z zestawu: (cztery, jeden, dwa, trzy, pięć)
Lista do ustawienia
Aby przekonwertować podaną listę, taką jak ArrayList, na zestaw w Javie, przekazujemy obiekt listy jako argument do konstruktora zbioru.
Następujący program Java implementuje tę konwersję.
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); } }
Wynik:
The ArrayList: (jeden, dwa, trzy, cztery, pięć)
Zestaw uzyskany z ArrayList: (cztery, jeden, dwa, trzy, pięć)
Sortuj zestaw w Javie
Kolekcja Set w Javie nie ma bezpośredniej metody sortowania. Musimy więc zastosować pewne pośrednie podejścia do sortowania lub porządkowania zawartości ustawionego obiektu. Istnieje jednak wyjątek w przypadku, gdy ustawiony obiekt jest zestawem TreeSet.
Obiekt TreeSet domyślnie udostępnia uporządkowany zestaw. Stąd jeśli zależy nam na uporządkowanym zestawie elementów, powinniśmy wybrać TreeSet. Dla HashSet lub LinkedHashSet, możemy przekonwertować zestaw na List. Posortuj listę za pomocą metody Collections.sort (), a następnie przekonwertuj listę z powrotem na zestaw.
To podejście jest pokazane w poniższym programie 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); } }
Wynik:
Niesortowany zestaw: (4, 8, 6, 2, 12, 10, 62, 40, 36)
Zestaw sortowany: (2, 4, 6, 8, 10, 12, 36, 40, 62)
Lista Vs ustawiona w Javie
Omówmy niektóre różnice między listą a zestawem.
Lista | Zestaw |
---|---|
Dozwolone są wartości puste. | Dozwolona jest tylko jedna wartość null. |
Implementuje interfejs listy. | Implementuje interfejs Set. |
Zawiera klasę Legacy, Vector. | Brak klas starszych. |
ArrayList, LinkedList to implementacje interfejsu listy. | HashSet, TreeSet, LinkedHashSet to implementacje Set. |
Uporządkowana sekwencja elementów. | Nieuporządkowana kolekcja różnych elementów. |
Umożliwia duplikaty. | Żadne duplikaty nie są dozwolone. |
Możliwość dostępu do elementów zgodnie z pozycją elementu. | Brak dostępu pozycyjnego. |
Nowe metody zdefiniowane w interfejsie List. | Brak nowych metod zdefiniowanych w interfejsie Set. Metody interfejsu kolekcji mają być używane z podklasami Set. |
Można go przechodzić w kierunku do przodu i do tyłu przy użyciu ListIterator. | Można go przejść tylko w kierunku do przodu za pomocą Iteratora. |
Często Zadawane Pytania
Pytanie 1) Co to jest zestaw w Javie?
jaka jest najlepsza darmowa zapora ogniowa dla systemu Windows 10
Odpowiedź: Zestaw to nieuporządkowana kolekcja unikalnych elementów i zazwyczaj modeluje koncepcję zestawu w matematyce.
Set to interfejs, który rozszerza interfejs Collection. Zawiera metody, które dziedziczy z interfejsu Collection. Interfejs zestawu dodaje tylko ograniczenie, tj. Nie wolno zezwalać na duplikaty.
Pytanie nr 2)Czy zestaw jest uporządkowany w Javie?
Odpowiedź: Nie. Zestaw Java nie jest zamówiony. Nie zapewnia również dostępu pozycyjnego.
Pytanie nr 3)Czy zestaw może zawierać duplikaty?
Odpowiedź: Zestaw to zbiór unikatowych elementów, nie może mieć żadnych duplikatów.
Pytanie 4)Czy zestaw Java Set jest iterowalny?
Odpowiedź: Tak. Interfejs set implementuje interfejs iterowalny, a zatem set może być przechodzony lub iterowany przy użyciu pętli forEach.
Pytanie nr 5)Czy w zestawie dozwolone jest NULL?
Odpowiedź: Zestaw dopuszcza wartość null, ale co najwyżej jedna wartość null jest dozwolona w implementacjach zestawu, takich jak HashSet i LinkedHashSet. W przypadku TreeSet zgłasza wyjątek czasu wykonywania, jeśli określono wartość null.
Wniosek
W tym samouczku omówiliśmy ogólne pojęcia i implementacje związane z interfejsem Set w Javie.
Interfejs zestawu nie ma zdefiniowanych żadnych nowych metod, ale używa metod interfejsu Collector i dodaje tylko implementację, aby zabronić zduplikowanych wartości. Zestaw dopuszcza co najwyżej jedną wartość null.
W naszych kolejnych samouczkach omówimy konkretne implementacje interfejsu Set, takie jak HashSet i TreeSet.
=> Odwiedź tutaj, aby nauczyć się języka Java od podstaw.
rekomendowane lektury
- Samouczek dotyczący refleksji w języku Java z przykładami
- Samouczek JAVA dla początkujących: ponad 100 praktycznych samouczków wideo Java
- Java String zawiera () Samouczek dotyczący metody z przykładami
- Postrzępiona tablica w Javie - samouczek z przykładami
- Samouczek klasy skanera Java z przykładami
- Samouczek dotyczący długości tablicy w języku Java z przykładami kodu
- Samouczek dotyczący ciągów Java | Metody ciągów Java z przykładami
- Co to jest wektor Java | Samouczek klasy wektorowej Java z przykładami