2010-06-16 87 views
15

如何在HashMap中搜索密钥?在这个程序中,当用户输入一个密钥时,代码应该安排在hashmap中搜索对应的值并打印出来。在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

制作务必通过点击旁边的“打勾”来接受回答您的问题的答案。 – 2010-06-16 07:56:29

回答

30

只需拨打get

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

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

你如何完成任何工作Jon如果你忙着殴打我们其他人的答案?你有没有建立一个超级用户界面来过滤和回答这些问题? – 2010-06-16 07:55:35

+4

如果您想“搜索” - 即在检索之前检查可用性,您也可以使用containsKey方法。我不知道你需要这个,但问题是这样说的。 http://java.sun.com/j2se/1.4.2/docs/api/java/util/HashMap.html#containsKey%28java.lang.Object%29 – 2010-06-16 07:55:54

+1

@Graphain:我没有做正确的工作现在 - 我正在听NDC的Chris Sells :) – 2010-06-16 07:57:50

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

它仍然给erroe说:cast ... get(...)到字符串 – 2010-06-16 09:33:09

+0

这里value是一个字符串变量 – 2010-06-16 09:33:39

+1

get方法返回一个对象。你必须像下面这样将它转换为一个字符串:value =(String)hashMap。get(new Integer(x));或者你使用所谓的“泛型”来告诉编译器在你的映射中只有字符串,就像我在我的例子中使用“” – 2010-06-16 09:37:16

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);