మాడ్యూల్ పాఠాలు (1/2)
సేకరణలు మరియు HashMap
సేకరణలు బహుళ విలువలను కలిగి ఉండే డేటా నిర్మాణాలు. ఆదిమ శ్రేణి మరియు టుపుల్ రకాలు కాకుండా, ఈ సేకరణల సూచన డేటా కుప్పలో నిల్వ చేయబడుతుంది, అంటే డేటా మొత్తం కంపైల్ సమయంలో తెలుసుకోవాల్సిన అవసరం లేదు మరియు ప్రోగ్రామ్ అమలు సమయంలో పెరుగుదల లేదా డైనమిక్గా కుదించవచ్చు.
రస్ట్లో సాధారణంగా ఉపయోగించే రెండు సేకరణలు వెక్టర్స్ (Vec<T>) మరియు కీ-విలువ పటాలు (HashMap<K, V>).
వెక్టర్స్ (Vec<T>)
మెమరీలో అన్ని విలువలను ఒకదానికొకటి పక్కన ఉంచే ఒకే డేటా నిర్మాణంలో ఒకే రకమైన ఒకటి కంటే ఎక్కువ విలువలను నిల్వ చేయడానికి వెక్టర్స్ మిమ్మల్ని అనుమతిస్తాయి:
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 వంటివి) ద్వారా డేటాను చూడాలనుకున్నప్పుడు ఇది చాలా ఉపయోగకరంగా ఉంటుంది.
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లో ప్రాథమిక కార్యకలాపాలు
Vec ::new()ని ఉపయోగించి v అనే పేరుగల మార్చగల పూర్ణాంక వెక్టర్ని ప్రకటించండి. పుష్ పద్ధతిని ఉపయోగించి క్రమంలో 10, 20 మరియు 30 మూలకాలను జోడించండి. చివరగా, println ఉపయోగించి వెక్టర్ (సూచిక 0) యొక్క మొదటి మూలకాన్ని ప్రింట్ చేయండి!.
సూచనను చూపించు
వెక్టార్ను ప్రారంభించేందుకు `let mut v = Vec::new();` ఉపయోగించండి, `v.push(value)`తో మూలకాలను చొప్పించండి మరియు `v[0]`తో యాక్సెస్ చేయండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
వ్యాయామం 2: HashMapతో వినియోగదారు స్కోర్లు
దిగుమతి std:: సేకరణలు::HashMap. ప్రధాన ఫంక్షన్లో, స్ట్రింగ్ కీలు మరియు i32 విలువలను నిల్వ చేయడానికి స్కోర్లను మార్చగల HashMapని ప్రకటించండి. వినియోగదారు 'ఆలిస్' కోసం 50 స్కోర్ను చొప్పించండి. గెట్ మెథడ్ని ఉపయోగించి స్కోర్ను సురక్షితంగా ఎక్స్ట్రాక్ట్ చేయండి మరియు దానిని ప్రింట్ చేయడానికి అన్వ్రాప్() చేయండి.
సూచనను చూపించు
`ఉపయోగించండి std:: సేకరణలు::HashMap;`మర్చిపోవద్దు.`scores.insert(String::from("Alice"), 50);`తో చొప్పించండి మరియు`.get("Alice").unwrap()`తో విలువను పొందండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
వ్యాయామం 3: వెక్టర్లో విలువలను రెట్టింపు చేయడం
పూర్ణాంకాల స్లైస్ &[i32]కు సూచనను అంగీకరించే డబుల్_విలువలు అనే ఫంక్షన్ను నిర్వచించండి మరియు అదే మూలకాలను 2తో గుణించిన కొత్త Vec<i32>ని అందిస్తుంది.
సూచనను చూపించు
ఫంక్షన్ స్లైస్ యొక్క మూలకాలపై మళ్ళించాలి మరియు వాటిని తిరిగి ఇవ్వాల్సిన కొత్త వెక్టర్లోకి 2తో గుణించాలి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది