Effizientes Suchen und Einfügen in HashMap in Rust: Wie vermeide ich doppeltes Hashing?
Hallo Kollegen! Ich lerne Rust und bin auf eine typische Aufgabe gestoßen: Ich muss einen Wert in HashMap aktualisieren, wenn der Schlüssel existiert, oder ein neues Paar einfügen, wenn der Schlüssel nicht vorhanden ist. Das Problem ist, dass ich dies in zwei Schritten mache: Zuerst prüfe ich das Vorhandensein des Schlüssels mit contains_key(), und dann füge ich den Wert ein oder ändere ihn. Aber wie ich verstehe, führt dies zu doppeltem Hashing – einmal bei der Prüfung und ein zweites Mal beim Einfügen. Das scheint ineffizient, besonders für große Wörterbücher.
Hier ist mein aktueller Code:
use std::collections::HashMap;
fn update_or_insert(map: &mut HashMap<String, i32>, key: &str, value: i32) {
if map.contains_key(key) {
// Aktualisiere den vorhandenen Wert
if let Some(val) = map.get_mut(key) {
*val = value;
}
} else {
// Füge neuen ein
map.insert(key.to_string(), value);
}
}
Dieser Code funktioniert, aber mich beunruhigt, dass contains_ke
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen