2015-11-24 31 views
-1

我用java HashMap哈希地图返回在Java中

{key1 = val1, key2 = val2} 

但是当印刷一个关键:

public String returnConfigByKey(String key){ 
     String result = ""; 
     result =(String) config.get(key); //key = key1 
     System.out.println("result " + result); 
     return result; 
    } 

结果是:

result null 

任何想法?

+0

您确定密钥确实具有与其相关的值吗?你可以用'key.trim()'再次检查吗? – alok

+0

btw。你不需要类型转换(String)。 –

+0

它可能是密钥不存在。另外令我困惑的是'(String)config.get(key);',如果你的'HashMap '是这样定义的,你为什么要键入cast?这导致我认为可能会有某些事情是假的。 – SomeJavaGuy

回答

3

HashMap.toString()不在键后添加空格。

因此,在您的地图中的键是"key1 ""key1 "都以空格结尾。你应该能够检索与config.get("key1 ")

1

这里的值是一个Minimal, Complete, and Verifiable example

HashMap<String, String> config = new HashMap<String, String>(); 
config.put("key1", "val1"); 
config.put("key2", "val2"); 
System.out.println(config); 
System.out.println("result " + config.get("key1")); 

输出

{key1=val1, key2=val2} 
result val1 

正如你所看到的,result打印精细,但打印地图而不是显示=标志周围的任何空格。

所以,就看你表现了什么:

HashMap<String, String> config = new HashMap<String, String>(); 
config.put("key1 ", " val1"); 
config.put("key2 ", " val2"); 
System.out.println(config); 
System.out.println("result " + config.get("key1")); 

输出

{key1 = val1, key2 = val2} 
result null 

这正是反映你所看到的,也显示了问题的关键尾随空间。