2010-06-16 20 views
15

में किसी दिए गए कुंजी के लिए कोई मान खोजें, आप HashMap में कोई कुंजी कैसे खोजते हैं? इस कार्यक्रम में, जब उपयोगकर्ता कुंजी में प्रवेश करता है तो कोड को संबंधित मान के लिए हैशैप को खोजने और फिर इसे मुद्रित करने की व्यवस्था करनी चाहिए।हैश मैप

कृपया मुझे बताएं कि यह क्यों काम नहीं कर रहा है।

import java.util.HashMap; 

import java.util.; import java.lang.; 

public class Hashmapdemo 
{ 
    public static void main(String args[]) 
    { 
     String value; 
     HashMap hashMap = new HashMap(); 
     hashMap.put(new Integer(1),"January"); 
     hashMap.put(new Integer(2) ,"February"); 
     hashMap.put(new Integer(3) ,"March"); 
     hashMap.put(new Integer(4) ,"April"); 
     hashMap.put(new Integer(5) ,"May"); 
     hashMap.put(new Integer(6) ,"June"); 
     hashMap.put(new Integer(7) ,"July"); 
     hashMap.put(new Integer(8),"August"); 
     hashMap.put(new Integer(9) ,"September"); 
     hashMap.put(new Integer(10),"October"); 
     hashMap.put(new Integer(11),"November"); 
     hashMap.put(new Integer(12),"December"); 

     Scanner scan = new Scanner(System.in); 
     System.out.println("Enter an integer :"); 
     int x = scan.nextInt(); 
     value = hashMap.get("x"); 
     System.out.println("Value is:" + value); 
    } 
} 
+3

मेक उस उत्तर को स्वीकार करना सुनिश्चित करें जो इसके आगे "टिक" मारकर आपके प्रश्न का उत्तर दे। –

उत्तर

30

बस get फोन:

HashMap<String, String> map = new HashMap<String, String>(); 
map.put("x", "y"); 

String value = map.get("x"); // value = "y" 
+3

यदि आप बाकी के जवाब देने में व्यस्त हैं तो आप जॉन से कोई काम कैसे कर सकते हैं? क्या आपके पास फ़िल्टरिंग और एसओ सवालों के जवाब देने के लिए अभी तक एक सुपर यूआई बनाया गया है? –

+4

यदि आप "खोज" करना चाहते हैं - यानी पुनर्प्राप्ति से पहले उपलब्धता की जांच करें, तो आप शामिल की विधि भी उपयोग कर सकते हैं। मुझे नहीं पता कि आपको इसकी ज़रूरत है लेकिन सवाल मुझे ऐसा कहता है। http://java.sun.com/j2se/1.4.2/docs/api/java/util/HashMap.html#containsKey%28java.lang.Object%29 –

+1

@Graphain: मैं सही काम नहीं कर रहा हूँ अब - मैं एनडीसी पर क्रिस बेल्स को सुन रहा हूं :) –

2

आप

लिखा
HashMap hashMap = new HashMap(); 
... 
int x = scan.nextInt(); 
value = hashMap.get("x"); 

होना चाहिए:

Map<Integer, String> hashMap = new HashMap<Integer, String>(); 
... 
int x = scan.nextInt(); 
value = hashMap.get(x); 

संपादित करें या जेनरिक के बिना, की तरह टिप्पणी में कहा:

int x = scan.nextInt(); 
value = (String) hashMap.get(new Integer(x)); 
+0

अभी भी यह एरोरो कह रहा है: कास्ट ... प्राप्त करें (...) –

+0

स्ट्रिंग करने के लिए यहां मान एक स्ट्रिंग वेरिएबल –

+1

प्राप्त विधि एक ऑब्जेक्ट देता है। आपको इसे इस तरह की स्ट्रिंग में डालना होगा: value = (स्ट्रिंग) हैश मैप।प्राप्त करें (नया इंटीजर (एक्स)); या आप कंपाइलर को बताने के लिए तथाकथित "जेनेरिक" का उपयोग करते हैं कि आपके मानचित्र में केवल स्ट्रिंग हैं, जैसे मैंने "<इंटरगर, स्ट्रिंग>" –

0

// आप कुंजी पूर्णांक होना चाहते हैं तो आप hashmap // नीचे के रूप में घोषित करने के लिए करना होगा:

HashMap<Integer, String> map = new HashMap<Integer, String>(); 
map.put(0, "x"); 
map.put(1, "y"); 
map.put(2, "z"); 

// इनपुट एक पूर्णांक मान x

String value = map.get(x); 
संबंधित मुद्दे