ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 7 · 2లో పాఠం 1కోర్సులో 13/14~12 min
మాడ్యూల్ పాఠాలు (1/2)

సేకరణలు మరియు HashMap

సేకరణలు బహుళ విలువలను కలిగి ఉండే డేటా నిర్మాణాలు. ఆదిమ శ్రేణి మరియు టుపుల్ రకాలు కాకుండా, ఈ సేకరణల సూచన డేటా కుప్పలో నిల్వ చేయబడుతుంది, అంటే డేటా మొత్తం కంపైల్ సమయంలో తెలుసుకోవాల్సిన అవసరం లేదు మరియు ప్రోగ్రామ్ అమలు సమయంలో పెరుగుదల లేదా డైనమిక్‌గా కుదించవచ్చు.

రస్ట్‌లో సాధారణంగా ఉపయోగించే రెండు సేకరణలు వెక్టర్స్ (Vec<T>) మరియు కీ-విలువ పటాలు (HashMap<K, V>).


వెక్టర్స్ (Vec<T>)

మెమరీలో అన్ని విలువలను ఒకదానికొకటి పక్కన ఉంచే ఒకే డేటా నిర్మాణంలో ఒకే రకమైన ఒకటి కంటే ఎక్కువ విలువలను నిల్వ చేయడానికి వెక్టర్స్ మిమ్మల్ని అనుమతిస్తాయి:

Rust
fn main() {
    // Creating an empty mutable vector
    let mut v: Vec<i32> = Vec::new();

    // Or using the vec! macro
    let mut v2 = vec![1, 2, 3];

    // Appending elements
    v.push(5);
    v.push(6);

    // Accessing elements by index
    let third = v2[2];
    println!("The third element is: {}", third);
}

HashMap (HashMap<K, V>)

HashMap<K, V> సేకరణ V రకం విలువలకు K రకం కీల మ్యాపింగ్‌ను నిల్వ చేస్తుంది. ఇది హ్యాషింగ్ ఫంక్షన్ ద్వారా పనిచేస్తుంది, ఈ కీలు మరియు విలువలు మెమరీలో ఎలా ఉంచబడతాయో నిర్ణయిస్తుంది. మీరు సంఖ్యా సూచిక ద్వారా కాకుండా, ఒక కీ (పేరు లేదా ID వంటివి) ద్వారా డేటాను చూడాలనుకున్నప్పుడు ఇది చాలా ఉపయోగకరంగా ఉంటుంది.

Rust
use std::collections::HashMap;

fn main() {
    let mut scores = HashMap::new();

    // Inserting key-value pair
    scores.insert(String::from("Blue"), 10);
    scores.insert(String::from("Yellow"), 50);

    // Reading a value (returns an Option<&V>)
    let team_name = String::from("Blue");
    let score = scores.get(&team_name);

    match score {
        Some(val) => println!("Score: {}", val),
        None => println!("No score found."),
    }
}

మీరే ప్రయత్నించండి

వ్యాయామం 1: Vecలో ప్రాథమిక కార్యకలాపాలు

వ్యాయామం#rust.m7.l1.e1
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

Vec ::new()ని ఉపయోగించి v అనే పేరుగల మార్చగల పూర్ణాంక వెక్టర్‌ని ప్రకటించండి. పుష్ పద్ధతిని ఉపయోగించి క్రమంలో 10, 20 మరియు 30 మూలకాలను జోడించండి. చివరగా, println ఉపయోగించి వెక్టర్ (సూచిక 0) యొక్క మొదటి మూలకాన్ని ప్రింట్ చేయండి!.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

వెక్టార్‌ను ప్రారంభించేందుకు `let mut v = Vec::new();` ఉపయోగించండి, `v.push(value)`తో మూలకాలను చొప్పించండి మరియు `v[0]`తో యాక్సెస్ చేయండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం 2: HashMapతో వినియోగదారు స్కోర్లు

వ్యాయామం#rust.m7.l1.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

దిగుమతి std:: సేకరణలు::HashMap. ప్రధాన ఫంక్షన్‌లో, స్ట్రింగ్ కీలు మరియు i32 విలువలను నిల్వ చేయడానికి స్కోర్‌లను మార్చగల HashMapని ప్రకటించండి. వినియోగదారు 'ఆలిస్' కోసం 50 స్కోర్‌ను చొప్పించండి. గెట్ మెథడ్‌ని ఉపయోగించి స్కోర్‌ను సురక్షితంగా ఎక్స్‌ట్రాక్ట్ చేయండి మరియు దానిని ప్రింట్ చేయడానికి అన్‌వ్రాప్() చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

`ఉపయోగించండి std:: సేకరణలు::HashMap;`మర్చిపోవద్దు.`scores.insert(String::from("Alice"), 50);`తో చొప్పించండి మరియు`.get("Alice").unwrap()`తో విలువను పొందండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం 3: వెక్టర్‌లో విలువలను రెట్టింపు చేయడం

వ్యాయామం#rust.m7.l1.e3
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

పూర్ణాంకాల స్లైస్ &[i32]కు సూచనను అంగీకరించే డబుల్_విలువలు అనే ఫంక్షన్‌ను నిర్వచించండి మరియు అదే మూలకాలను 2తో గుణించిన కొత్త Vec<i32>ని అందిస్తుంది.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

ఫంక్షన్ స్లైస్ యొక్క మూలకాలపై మళ్ళించాలి మరియు వాటిని తిరిగి ఇవ్వాల్సిన కొత్త వెక్టర్‌లోకి 2తో గుణించాలి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది