I denne vejledning lærer vi om Set-grænsefladen i Java og dens metoder.
Den Set
grænsefladen af Java Collections
rammer giver funktionerne i den matematiske sæt i Java. Det udvider Collection
grænsefladen.
I modsætning til List
grænsefladen kan sæt ikke indeholde duplikatelementer.
Klasser der implementerer Set
Da det Set
er en grænseflade, kan vi ikke oprette objekter ud fra det.
For at kunne bruge funktionerne i Set
grænsefladen kan vi bruge disse klasser:
- HashSet
- LinkedHashSet
- EnumSet
- TreeSet
Disse klasser er defineret i Collections
rammen og implementerer Set
grænsefladen.
Grænseflader, der udvider Set
Den Set
interface er også forlænget med disse subinterfaces:
- SortedSet
- NavigableSet
Hvordan bruges Set?
I Java skal vi importere java.util.Set
pakken for at kunne bruge den Set
.
// Set implementation using HashSet Set animals = new HashSet();
Her har vi skabt et Set
kaldet dyr. Vi har brugt HashSet
klassen til at implementere Set
grænsefladen.
Metoder til sæt
Den Set
grænseflade omfatter alle fremgangsmåderne ifølge Collection
grænsefladen. Det er fordi Collection
er en super grænseflade af Set
.
Nogle af de almindeligt anvendte metoder til Collection
grænsefladen, der også er tilgængelige i Set
grænsefladen, er:
- add () - tilføjer det angivne element til sættet
- addAll () - tilføjer alle elementerne i den angivne samling til sættet
- iterator () - returnerer en iterator, der kan bruges til at få adgang til elementerne i sættet sekventielt
- remove () - fjerner det angivne element fra sættet
- removeAll () - fjerner alle elementerne fra sættet, der findes i et andet specificeret sæt
- retainAll () - bevarer alle de elementer i sættet, der også findes i et andet specificeret sæt
- clear () - fjerner alle elementerne fra sættet
- størrelse () - returnerer længden (antallet af elementer) på sættet
- toArray () - returnerer en matrix, der indeholder alle elementerne i sættet
- indeholder () - vender tilbage,
true
hvis sættet indeholder det angivne element - containAll () - returnerer,
true
hvis sættet indeholder alle elementerne i den angivne samling - hashCode () - returnerer en hashkodeværdi (adresse på elementet i sættet)
For at lære om flere metoder til Set
grænsefladen skal du besøge Java Set (officiel Java-dokumentation).
Indstil operationer
Java- Set
grænsefladen giver os mulighed for at udføre grundlæggende matematiske sætoperationer som union, skæringspunkt og delmængde.
- Union - for at få foreningen af to sæt x og y kan vi bruge
x.addAll(y)
- Kryds - for at få krydset mellem to sæt x og y kan vi bruge
x.retainAll(y)
- Delsæt - for at kontrollere, om x er et delsæt af y, kan vi bruge
y.containsAll(x)
Implementering af Set Interface
1. Implementering af HashSet-klasse
import java.util.Set; import java.util.HashSet; class Main ( public static void main(String() args) ( // Creating a set using the HashSet class Set set1 = new HashSet(); // Add elements to the set1 set1.add(2); set1.add(3); System.out.println("Set1: " + set1); // Creating another set using the HashSet class Set set2 = new HashSet(); // Add elements set2.add(1); set2.add(2); System.out.println("Set2: " + set2); // Union of two sets set2.addAll(set1); System.out.println("Union is: " + set2); ) )
Produktion
Set1: (2, 3) Set2: (1, 2) Union er: (1, 2, 3)
For at lære mere om HashSet
, besøg Java HashSet.
2. Implementering af TreeSet-klasse
import java.util.Set; import java.util.TreeSet; import java.util.Iterator; class Main ( public static void main(String() args) ( // Creating a set using the TreeSet class Set numbers = new TreeSet(); // Add elements to the set numbers.add(2); numbers.add(3); numbers.add(1); System.out.println("Set using TreeSet: " + numbers); // Access Elements using iterator() System.out.print("Accessing elements using iterator(): "); Iterator iterate = numbers.iterator(); while(iterate.hasNext()) ( System.out.print(iterate.next()); System.out.print(", "); ) ) )
Produktion
Indstil ved hjælp af TreeSet: (1, 2, 3) Adgang til elementer ved hjælp af iterator (): 1, 2, 3,
For at lære mere om det TreeSet
, besøg Java TreeSet.
Nu da vi ved, hvad der Set
er, vil vi se dens implementeringer i klasser som EnumSet
, HashSet
, LinkedHashSet
og TreeSet
i de næste tutorials.