2011-11-01 22 views
18

में मान के रूप में उपयोग किए गए ऐरे सूची में मान कैसे जोड़ें, मेरे पास HashMap<String, ArrayList<String>>examList है। मैं इसका उपयोग करना चाहता हूं कि प्रत्येक व्यक्ति के प्रत्येक पाठ्यक्रम के ग्रेड को सहेजना है। तो इस HashMap के लिए कुंजी couresID है, और मूल्य इस व्यक्ति द्वारा किए गए सभी ग्रेड (परीक्षा प्रयास) के ArrayList है।जावा, हैश मैप

समस्या यह है कि मुझे पता है कि सरणी सूचियों और हैशैप्स के साथ सामान्य रूप से कैसे काम करना है, लेकिन मुझे यकीन नहीं है कि इस उदाहरण से कैसे शुरू किया जाए। तो मैं HashMap के अंदर ArrayList पर कुछ कैसे जोड़ूं?

उत्तर

34

आप या तो Google Guava लाइब्रेरी का उपयोग कर सकते हैं, जिसमें मल्टी-वैल्यू-मैप्स के लिए कार्यान्वयन हैं (अपाचे कॉमन्स कलेक्शन के कार्यान्वयन भी हैं, लेकिन जेनरिक के बिना)।

हालांकि, अगर आप एक बाहरी lib का उपयोग नहीं करना चाहते हैं, तो आप कुछ इस तरह करना होगा:

if (map.get(id) == null) { //gets the value for an id) 
    map.put(id, new ArrayList<String>()); //no ArrayList assigned, create new ArrayList 

map.get(id).add(value); //adds value to list. 
+0

स्प्रिंग मल्टीवैल्यूमैप और लिंक्ड मल्टीआईल्यूमैप – eduardohl

+0

भी अच्छा उदाहरण है, बिल्कुल मेरे जैसे जावा एन 00 बी की आवश्यकता है। – goelakash

2

सबसे पहले, आप HashMap में देखने के लिए सही ArrayList है:

ArrayList<String> myAList = theHashMap.get(courseID) 

फिर, ArrayList करने के लिए नए ग्रेड जोड़ें:

myAList.add(newGrade) 
6
String courseID = "Comp-101"; 
List<String> scores = new ArrayList<String>(); 
scores.add("100"); 
scores.add("90"); 
scores.add("80"); 
scores.add("97"); 

Map<String, ArrayList<String>> myMap = new HashMap<String, ArrayList<String>>(); 
myMap.put(courseID, scores); 

आशा इस मदद करता है!

+0

और मैं कैसे कुंजी प्राप्त कर सकते हैं, मूल्यों? – David

+0

@ डेविड हैश मैप की कीसेट() विधि का उपयोग करें। यह सभी कुंजियों को वापस कर देगा जो उपरोक्त उदाहरण में स्ट्रिंग्स होंगे। फिर प्रत्येक कुंजी के लिए, आप हैश मैप की (कुंजी) विधि का उपयोग कर संबंधित ArrayList प्राप्त कर सकते हैं, जहां 'कुंजी' पहले से प्राप्त की गई कुंजी है। उम्मीद है की यह मदद करेगा! – Mechkov

+0

धन्यवाद आदमी! बहुत उपयोगी! – David

3

सबसे पहले आप मूल्य (एक कुंजी दी) retreieve और उसके बाद आप एक नया तत्व जोड़ करने के लिए यह

ArrayList<String> grades = examList.get(courseId); 
    grades.add(aGrade); 
4
  • पहले HashMap पैदा करते हैं।

    हैश मैप> mapList = new हैश मैप>();

  • अपनी इनपुट कुंजी के विरुद्ध हैश मैप से मूल्य प्राप्त करें।

    ArrayList arrayList = mapList.get (कुंजी);

  • सरणी सूची में मूल्य जोड़ें।

    arrayList.add (addvalue);

  • फिर फिर उस कुंजी मान के विरुद्ध सरणीसूची डालें। mapList.put (कुंजी, सरणीसूची);

यह काम करेंगे .....

+0

क्या सरणीसूची को हैशप में वापस रखना आवश्यक है? या संदर्भ द्वारा जोड़ा गया एक आइटम है? –

संबंधित मुद्दे