Berechnen Sie den Unterschied zwischen zwei Sätzen in Rust
In diesem Artikel wird die integrierte Funktion zum Berechnen der Differenz zwischen zwei Sätzen erläutert.
Hash-Set in Rust
Ein Hash-Set wird als HashMap
implementiert, wobei der Wert ()
ist. Wie beim Typ müssen Elemente eines HashSet
die Traits Eq
und Hash
implementieren.
Typischerweise kann dies mit #[derive(PartialEq, Eq, hash)]
erreicht werden. Wenn Sie diese jedoch selbst implementieren, müssen die folgenden Eigenschaften erfüllt sein.
Syntax:
let mut HashSet_name= HashSet::new();
Wir müssen wissen, ob zwei Schlüssel gleich sind; Ihre Hashes sollten ebenfalls gleich sein.
Beispiel:
fn main() {
use std::collections::HashSet;
let mut foods = HashSet::new();
foods.insert("I love to eat".to_string());
foods.insert("Ramen with cheese".to_string());
foods.insert("Ramen with eggs".to_string());
foods.insert("Ramen with seaweed".to_string());
if !foods.contains("Sesame") {
println!("We have {} foods, but sesame is not the one I wanted.",
foods.len());
}
foods.remove("Ramen with eggs.");
for food in &foods {
println!("{food}");
}
}
Ausgang:
We have 4 foods, but sesame is not the one I wanted.
Ramen with cheese
Ramen with seaweed
Ramen with eggs
I love to eat
Wenn Sie einen Wert in das HashSet
einfügen (d.h. der neue Wert ist identisch mit dem bestehenden Wert und beide haben denselben Hash), ersetzt der neue Wert den alten.
Mengen haben vier grundlegende Operationen (jeder der nachfolgenden Aufrufe gibt einen Iterator zurück):
union
– erhalte alle unterschiedlichen Elemente aus beiden Mengen.Differenz
– alle Elemente aus der ersten Menge abrufen, die nicht aus der zweiten stammen.Schnittpunkt
– Abrufen aller eindeutigen Elemente für beide Sätze.Symmetrische Differenz
– Abrufen aller Elemente in beiden Mengen, aber nicht in beiden.
Unten ist ein Beispiel, um den Unterschied zwischen Sätzen zu finden. Wir müssen wissen, dass der Unterschied nicht symmetrisch ist.
fn main() {
use std::collections::HashSet;
let x = HashSet::from([1, 2, 3]);
let y = HashSet::from([4, 2, 3, 4]);
for z in x.difference(&y) {
println!("{z}");
}
let diff: HashSet<_> = x.difference(&y).collect();
assert_eq!(diff, [1].iter().collect());
let diff: HashSet<_> = y.difference(&x).collect();
assert_eq!(diff, [4].iter().collect());
}
Ausgang:
1
Berechnen Sie den Unterschied zwischen zwei Sätzen in Rust
Dieses Programm erstellt zwei HashSets
, um die Integer-Elemente zu speichern, den Unterschied zwischen den beiden Sets zu finden und das Ergebnis anzuzeigen. Diese beiden HashSets
können Integer-Elemente im folgenden Quellcode speichern.
Die Differenz zwischen den beiden Sätzen wurde dann mit der difference()
-Technik ermittelt. Dann haben wir das Ergebnis ausgedruckt.
use std::collections::HashSet;
fn main() {
let first_set: HashSet<_> = [10, 20, 30, 40].iter().cloned().collect();
let second_set: HashSet<_> = [10, 20, 30].iter().cloned().collect();
println!("The difference betwen first_set and second_set is:");
for d in first_set.difference(&second_set) {
print!("{} ", d);
}
}
Ausgang:
The difference betwen first_set and second_set is:
40