Assosiatiivisten taulukoiden käyttö

Rust:
Assosiatiivisten taulukoiden käyttö

Miten:

Rustissa HashMap-tyyppi std::collections-moduulista tarjoaa assosiatiivisten taulukoiden toiminnallisuuden. Näin voit työskennellä niiden kanssa:

use std::collections::HashMap;

fn main() {
    // Uuden HashMapin luominen
    let mut scores = HashMap::new();

    // Arvojen lisääminen
    scores.insert(String::from("Blue"), 10);
    scores.insert(String::from("Yellow"), 50);

    // Arvojen hakeminen
    let team_name = String::from("Blue");
    if let Some(score) = scores.get(&team_name) {
        println!("Pisteet tiimille Blue: {}", score); // Tuloste: Pisteet tiimille Blue: 10
    }

    // Arvon päivittäminen
    scores.entry(String::from("Blue")).and_modify(|e| *e += 5);

    // Avain-arvo -parien läpikäynti
    for (key, value) in &scores {
        println!("{}: {}", key, value); // Tuloste: Blue: 15, Yellow: 50
    }
}

Syväsukellus

Rustin HashMap käyttää hajautusfunktiota avainten yhdistämiseen arvoihin, mikä mahdollistaa nopean datan noudon. Tämä tehokkuus tulee kuitenkin kustannuksella: hajautustaulukot eivät säilytä elementtiensä järjestystä. Tämä eroaa muiden assosiatiivisten taulukoiden toteutuksista, kuten Pythonin (dict) tai Rubyn, jotka viimeisimmissä versioissa säilyttävät lisäysjärjestyksen ominaisuutena. Käyttötarkoituksiin, joissa avain-arvo -parien järjestys on merkittävä, Rustin kehittäjät saattavat harkita BTreeMap-käytön std::collections-moduulista, joka säilyttää järjestyksen mutta saattaa tarjota hitaamman lisäyksen ja noudon verrattuna HashMapiin. Lopulta valinta HashMapin ja BTreeMapin välillä riippuu tiettyjen vaatimusten mukaan järjestyksen ja suorituskyvyn suhteen.