0Pricing
Learn Rust Coding · Lektion

Mit HashSet arbeiten

Verwalten Sie eindeutige Werte.

Mit HashSet arbeiten ist eine kostenlose Learn Rust Coding-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn Rust Coding-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn Rust Coding-Kurs umfasst insgesamt 4 Lektionen.

Was ist ein HashSet?

Ein HashSet speichert eine Sammlung eindeutiger Werte. Es gibt keine Duplikate und keine Schlüssel, sondern nur Elemente.

Es eignet sich hervorragend für die schnelle Beantwortung einer Frage: „Habe ich diesen Wert schon gesehen?“

Eine Menge erstellen

Wie HashMap befindet sich HashSet in std::collections und muss mit use importiert werden.

Erstellen Sie eine leere Menge mit HashSet::new() und deklarieren Sie sie als mut, um Elemente hinzuzufügen.

use std::collections::HashSet;

fn main() {
    let mut s: HashSet<i32> = HashSet::new();
    s.insert(1);
    s.insert(2);
    println!("size: {}", s.len());
}

Einfügen und Duplikate

Die Methode insert gibt einen bool zurück: true, wenn der Wert neu war, und false, wenn er bereits vorhanden war.

Das Einfügen eines Duplikats hat keine Wirkung, sodass die Menge automatisch eindeutig bleibt.

use std::collections::HashSet;

fn main() {
    let mut s = HashSet::new();
    println!("{}", s.insert(5));
    println!("{}", s.insert(5));
    println!("len = {}", s.len());
}

Mitgliedschaft prüfen

Verwenden Sie contains, um zu prüfen, ob ein Wert in der Menge enthalten ist. Die Methode gibt einen bool zurück.

Das ist der häufigste Grund für eine Menge: schnelle und verständliche Abfragen.

use std::collections::HashSet;

fn main() {
    let mut s = HashSet::new();
    s.insert("red");
    s.insert("blue");
    println!("has red? {}", s.contains("red"));
    println!("has green? {}", s.contains("green"));
}

Elemente entfernen

Die Methode remove nimmt einen Wert entgegen und gibt true zurück, wenn er vorhanden war und entfernt wurde.

Das Entfernen eines nicht vorhandenen Werts gibt einfach false zurück.

use std::collections::HashSet;

fn main() {
    let mut s = HashSet::new();
    s.insert(7);
    println!("{}", s.remove(&7));
    println!("{}", s.remove(&7));
}

Aus einem Iterator erstellen

Sie können jeden Iterator von Werten direkt in ein HashSet sammeln.

Das ist eine schnelle Möglichkeit, Duplikate zu entfernen: Übergeben Sie eine Liste mit Wiederholungen, und die Menge behält jeden Wert genau einmal.

use std::collections::HashSet;

fn main() {
    let nums = [1, 2, 2, 3, 3, 3];
    let unique: HashSet<i32> = nums.iter().copied().collect();
    println!("distinct: {}", unique.len());
}

Eine Menge durchlaufen

Durchlaufen Sie eine Menge mit einer for-Schleife, um jedes Element zu besuchen.

Wie bei HashMap ist die Reihenfolge der Iteration nicht garantiert und kann sich bei jedem Durchlauf unterscheiden.

use std::collections::HashSet;

fn main() {
    let s: HashSet<i32> = [10, 20, 30].into_iter().collect();
    let mut total = 0;
    for v in &s {
        total += v;
    }
    println!("sum = {}", total);
}

Vereinigung

Die Methode union liefert jeden Wert, der in einer der beiden Mengen enthalten ist.

Sie gibt einen Iterator zurück. Sammeln Sie ihn daher in einer neuen Menge oder durchlaufen Sie ihn in einer Schleife.

use std::collections::HashSet;

fn main() {
    let a: HashSet<i32> = [1, 2, 3].into_iter().collect();
    let b: HashSet<i32> = [3, 4].into_iter().collect();
    let u: HashSet<i32> = a.union(&b).copied().collect();
    println!("union size: {}", u.len());
}

Schnittmenge

Die Methode intersection liefert Werte, die in beiden Mengen vorkommen.

Sie eignet sich ideal, um gemeinsame Elemente wie übereinstimmende Tags oder gemeinsame Freunde zu finden.

use std::collections::HashSet;

fn main() {
    let a: HashSet<i32> = [1, 2, 3].into_iter().collect();
    let b: HashSet<i32> = [2, 3, 4].into_iter().collect();
    let common: Vec<i32> = a.intersection(&b).copied().collect();
    println!("common count: {}", common.len());
}

Differenz

Die Methode difference liefert Werte, die in der ersten, aber nicht in der zweiten Menge enthalten sind.

Vertauschen Sie die Reihenfolge, um die umgekehrte Differenz zu erhalten. Für Elemente, die genau in einer der beiden Mengen vorkommen, gibt es außerdem symmetric_difference.

use std::collections::HashSet;

fn main() {
    let a: HashSet<i32> = [1, 2, 3].into_iter().collect();
    let b: HashSet<i32> = [2].into_iter().collect();
    let only_a: Vec<i32> = a.difference(&b).copied().collect();
    println!("only in a: {}", only_a.len());
}

Teilmenge und Disjunktheit

Verwenden Sie is_subset, um zu prüfen, ob jedes Element einer Menge in einer anderen Menge enthalten ist.

Mit is_disjoint prüfen Sie, ob zwei Mengen überhaupt keine Werte gemeinsam haben. Beide Methoden geben ein einfaches bool zurück.

use std::collections::HashSet;

fn main() {
    let a: HashSet<i32> = [1, 2].into_iter().collect();
    let b: HashSet<i32> = [1, 2, 3].into_iter().collect();
    println!("a subset of b? {}", a.is_subset(&b));
}

Kurztest

Sie fügen denselben Wert zweimal in ein HashSet ein.

Zusammenfassung

Ein HashSet enthält eindeutige Werte und ermöglicht schnelle contains-Prüfungen.

Sie haben Werte eingefügt und entfernt, mit collect Duplikate entfernt und Mengen mit union, intersection und difference kombiniert.

Häufig gestellte Fragen

Ist die Lektion „Mit HashSet arbeiten“ kostenlos?

Ja — der vollständige Text von „Mit HashSet arbeiten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn Rust Coding-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn Rust Coding-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Mit HashSet arbeiten“?

Verwalten Sie eindeutige Werte. Du übst Learn Rust Coding mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Learn Rust Coding zu starten?

Keine Vorkenntnisse erforderlich. Learn Rust Coding auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Mit HashSet arbeiten“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Learn Rust Coding-Lektion Code schreiben und ausführen?

Ja. Jede Learn Rust Coding-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Eine HashMap erstellen
  2. Entry-API und Standardwerte
  3. Mit HashSet arbeiten
  4. Zählen und gruppieren
← Zurück zu Learn Rust Coding