2014-10-03 55 views
0

我目前正在研究一些舊的遺留應用程序,並且必須使用Java 1.4,現在已經有EOL好幾年了。我需要從地圖中獲取價值。我的地圖看起來是這樣的:從地圖獲取價值(使用Java 1.4)

Key  | Value 
--------------- 
String1 | int1 
String2 | String6 
String3 | Float1 
String4 | String7 
String5 | Object1 

我嘗試以下,但我不斷收到一個空

String myVal = (String) map.get(String2); 

是否有可能得到一個值,而不使用迭代器?

+1

如果你得到一個空值,那是因爲你的地圖不包含'myString'鍵。請注意,你已經顯示它的方式,你有相同的關鍵5次......聽起來不太可能。請展示一個簡短但完整的程序來展示問題。 – 2014-10-03 14:30:31

+0

如果它不是一個String,那麼你只會得到一個'ClassCastException'。 – EpicPandaForce 2014-10-03 14:31:05

+0

嗨,喬恩,我已經編輯了一個更清晰的解釋問題。我不必擔心類轉換異常,因爲這些鍵是常量。我知道我每次都得到什麼。謝謝你的投入。 – Native 2014-10-03 14:47:50

回答

1

你應該得到你報告方式的價值,這是完全正確的:

String myVal = (String) map.get("myKey"); 

只要在地圖裏面有該密鑰。

問題與您報告的地圖方案一樣,地圖可能包含String,Float或其他值類型,因此直接將其轉換爲String是危險的。你應該檢查值類型:

Object myValObj = map.get("myKey"); 
if (myValObj instanceof String) { 
    // Handle the string 
} else if (myValObj instanceof Float) { 
    // Handle the float 
} // .... 
+0

謝謝你的回答西蒙娜,事實證明我是在我的地圖存儲值爲「」MyString「」而不是「MyString」。我想我應該多睡一會。 – Native 2014-10-03 14:39:22