2015-11-24 39 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 

這正是反映你所看到的,也顯示了問題的關鍵尾隨空間。