1. కీ-విలువ జతల సమితి.
జావాలో, మరొక ఆసక్తికరమైన సేకరణ (విస్తృతంగా చెప్పాలంటే) Map
. కొన్నిసార్లు ఈ డేటా నిర్మాణాన్ని నిఘంటువు అని కూడా అంటారు.
ఇది సేకరణకు సారూప్యంగా ఉంటుంది Set
, కానీ ఇది మూలకాల సమితికి బదులుగా మూలకాల యొక్క "జతల" సమితిని నిల్వ చేస్తుంది, ప్రతి జతలో Map
రెండు అంశాలు ఉంటాయి: ఒక "కీ" మరియు "విలువ".
మీ ప్రోగ్రామ్ ఉద్యోగుల పేర్లు మరియు వారి జీతాలు లేదా మీ సహోద్యోగుల పేర్లు మరియు వారి వయస్సులను నిల్వ చేయాలని మీరు అనుకుందాం. అప్పుడు మీకు ఇలాంటి పట్టిక అవసరం:
పేరు | వయస్సు |
---|---|
ఎలోన్ | 21 |
జెఫ్ | 22 |
బిల్లు | 48 |
వారెన్ | ? |
ప్రతి అడ్డు వరుసలో రెండు విలువలు ఉంటాయి. మేము పేరును జత కీగా మరియు వయస్సును జత విలువగా సూచిస్తాము .
ఈ జతల మొత్తం సెట్ మా మ్యాప్ ( Map
).
ఒక జత కీ తప్ప ఏదైనా కావచ్చు null
. కీలు తప్పనిసరిగా ప్రత్యేకంగా ఉండాలి: ఒక మ్యాప్లో రెండు ఒకేలాంటి కీలు ఉండకూడదు.
2. HashMap
తరగతి
తరగతి HashMap
అనేది అత్యంత ప్రజాదరణ పొందిన Map
సేకరణ రకం. ఒక వైపు, ఇది HashSetకి చాలా పోలి ఉంటుంది మరియు దాని అన్ని పద్ధతులను కలిగి ఉంటుంది. మరోవైపు, ఇది ArrayList
పదాలను (లేదా మరేదైనా) దాని సూచికలుగా ఉపయోగించగల జాబితా ( ) లాంటిది.
HashMap
మీరు ఇలాంటి స్టేట్మెంట్ని ఉపయోగించి సృష్టించవచ్చు :
HashMap<KeyType, ValueType> name = new HashMap<KeyType, ValueType>();
KeyType
నిల్వ చేయబడిన జతలలో కీల రకం ఎక్కడ ఉంది మరియు ValueType
సేకరణలో నిల్వ చేయబడిన జతలలోని విలువల రకం HashMap
.
తరగతికి HashMap
ఇలాంటి పద్ధతులు ఉన్నాయి:
పద్ధతి | వివరణ |
---|---|
|
సేకరణకు ( key , ) జతని జోడిస్తుందిvalue |
|
కీతో అనుబంధించబడిన విలువను అందిస్తుంది. |
|
సేకరణలో కీ ఉందో లేదో తనిఖీ చేస్తుంది |
|
సేకరణలో విలువ ఉనికిని తనిఖీ చేస్తుంది |
|
సేకరణ నుండి ఒక మూలకాన్ని తీసివేస్తుంది |
|
అన్ని మూలకాలను తీసివేసి, సేకరణను క్లియర్ చేస్తుంది |
|
సేకరణలోని కీ-విలువ జతల సంఖ్యను అందిస్తుంది |
|
సేకరణలోని కీల సమితిని అందిస్తుంది |
|
సేకరణలోని మూలకాలను కలిగి ఉన్న సెట్ని అందిస్తుంది |
|
సేకరణలోని Set అన్ని జతల ( ) సెట్ ( )ని అందిస్తుంది .Map.Entry |
a కి మూలకాలను కలుపుతోందిHashMap
పద్ధతిని ఉపయోగించి ఎలిమెంట్లు మ్యాప్కి జంటలుగా జోడించబడతాయి put()
. కీ మొదటి ఆర్గ్యుమెంట్గా పాస్ చేయబడింది మరియు విలువ రెండవదిగా పాస్ చేయబడింది.
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("Elon", 21);
map.put("Jeff", 22);
map.put("Bill", 48);
map.put("Warren", null);
కీ-విలువ జతని జోడించేటప్పుడు, కీ ఇప్పటికే సేకరణలో ఉన్నట్లయితే, పాత విలువ కొత్త విలువతో భర్తీ చేయబడుతుంది.
ఈ ప్రవర్తన ఒక శ్రేణి లేదా సంఖ్యలకు బదులుగా HashMap
పదాలు ( ) అనే సూచికల జాబితాను చేస్తుంది.String
దాదాపు ఏ రకం అయినా కీటైప్ లేదా వాల్యూటైప్ కావచ్చు. కీటైప్ కోసం కొన్ని చిన్న అదనపు అవసరాలు ఉన్నాయి మరియు మీరు జావా కలెక్షన్స్ అన్వేషణలో సేకరణలను మరింత వివరంగా అధ్యయనం చేసినప్పుడు వాటి గురించి తెలుసుకుంటారు.
3. a యొక్క ఉపసమితులు HashMap
: కీల సమితి
మేము HashMap
స్క్రీన్పై అన్ని ఎంట్రీలను ప్రదర్శించాలనుకుంటున్నాము. మేము దీన్ని ఎలా చేస్తాము? దీన్ని చేయడానికి, లోని అన్ని ఎంట్రీల ద్వారా ఎలా వెళ్లాలో మనం తెలుసుకోవాలి HashMap
. ఇది అనేక విధాలుగా చేయవచ్చు.
కీలను లూప్ చేయడం సులభమయిన మార్గం
HashMap
ఎంట్రీలు వరుసగా లెక్కించబడవు, కాబట్టి కౌంటర్ ఉన్న లూప్ ఇక్కడ పని చేయదు. కానీ మేము పద్ధతిని ఉపయోగించి కీల సమితిని పొందవచ్చు keySet()
మరియు సెట్లో ఎలా పునరావృతం చేయాలో మీకు ఇప్పటికే తెలుసు:
కోడ్ | వివరణ |
---|---|
|
map కీతో అనుబంధించబడిన విలువను పొందండి యొక్క కీలను లూప్ చేయండి |
పద్ధతి keySet()
కీల సమితిని అందిస్తుంది. మీరు ఈ సెట్ను రెండు విధాలుగా ఉపయోగించవచ్చు:
కాంపాక్ట్ సంజ్ఞామానం | దీర్ఘ సంజ్ఞామానం |
---|---|
|
|
4. కీ-విలువ జతలపై లూప్ చేయడం
మరింత సంక్లిష్టమైన మార్గం కూడా ఉంది: మీరు కీ-విలువ జతల సమితిగాMap
మార్చవచ్చు , ఆపై మేము ఇప్పటికే నేర్చుకున్నట్లుగా సెట్ మూలకాలపై లూప్ చేయవచ్చు.
సేకరణలో HashMap
కీ-విలువ జతని నిల్వ చేసే సహాయక తరగతి ఉంది. ఇది సుమారుగా ఇలా కనిపిస్తుంది:
class Entry<KeyType, ValueType>
{
private KeyType key;
private ValueType value;
public KeyType getKey()
{
return this.key;
}
public ValueType getValue()
{
return this.value;
}
}
entrySet()
ఒక వస్తువుపై పద్ధతిని కాల్ చేయడం వల్ల వచ్చే ఫలితం :HashMap<KeyType, ValueType>
Set<Entry<KeyType, ValueType>>
Set<Entry<KeyType, ValueType>> name = map.entrySet();
ఇక్కడ మేము టైప్ పారామీటర్తో జెనరిక్ Set
క్లాస్ని కలిగి ఉన్నాము, ఇది రెండు రకాల పారామితులతో కూడిన సాధారణ రకం ( Entry
).
ఒక అనుభవశూన్యుడు దీని గురించి గందరగోళం చెందడం చాలా సులభం. కానీ మీరు దాన్ని గుర్తించిన తర్వాత, మీరు ఇలా కోడ్ వ్రాయవచ్చు:
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("Elon", 21);
map.put("Jeff", 22);
map.put("Bill", 48);
map.put("Warren", null);
Set<Map.Entry<String, Integer>> entries = map.entrySet();
for(Map.Entry<String, Integer> pair: entries)
{
String key = pair.getKey();
Integer value = pair.getValue();
System.out.println(key + " --> " + value);
}
ఈ కోడ్ను కొద్దిగా సరళీకరించవచ్చు:
ముందుగా, మీరు దీని కోసం ప్రత్యేక వేరియబుల్ని సృష్టించడాన్ని దాటవేయవచ్చు entries
మరియు బదులుగా entrySet()
నేరుగా for
లూప్ లోపల ఉన్న పద్ధతిని కాల్ చేయండి:
for(Map.Entry<String, Integer> pair: map.entrySet())
{
String key = pair.getKey();
Integer value = pair.getValue();
System.out.println(key + " --> " + value);
}
రెండవది, మీరు కీ-విలువ జతvar
యొక్క రకాన్ని స్వయంచాలకంగా ఊహించడానికి ఇటీవల ప్రవేశపెట్టిన ఆపరేటర్ని ఉపయోగించవచ్చు :
for(var pair: map.entrySet())
{
String key = pair.getKey();
Integer value = pair.getValue();
System.out.println(key + " --> " + value);
}
చెడ్డది కాదు, అవునా?
5. పోలిక ArrayList
మరియుHashMap
తీగలను (లేదా ఇతర రకాలను) ఇండెక్స్లుగా (కీలు) ఉపయోగించడానికి అనుమతించే దానిని HashMap
గట్టిగా పోలి ఉంటుంది .ArrayList
Integer
మీరు a లోని కీల కోసం ఉపయోగిస్తే HashMap
, అది ఒక మాదిరిగానే ఉంటుంది ArrayList
. పోల్చి చూద్దాం:
ArrayList<String>తో కోడ్ | HashMap <పూర్ణాంకం, స్ట్రింగ్>తో కోడ్ |
---|---|
|
|
GO TO FULL VERSION