2012-03-06 105 views
3

我存儲一個HashMap內的雙值,如圖的Java:java.lang.Double中不能轉換爲java.lang.String

HashMap listMap = new HashMap(); 

double mvalue =0.0; 

listMap.put("mvalue",mvalue); 

現在,當我試圖檢索該值,如圖

mvalue = Double.parseDouble((String) listMap.get("mvalue")); 

我得到一個錯誤

java.lang.Double中不能被轉換爲java.lang.String

我在這裏感到困惑,

這是我的實際HashMap和我設置它的值,如圖所示

HashMap listMap = new HashMap(); 
double mvalue =0.0 ; 
List<Bag> bagList = null; 
listMap.put("bagItems",bagList); 
listMap.put("mvalue", mvalue); 

可能有人請告訴我,HashMap的結構應該如何?

+0

除了您的問題的答案,您可能還想閱讀有關泛型的教程。 http://docs.oracle.com/javase/tutorial/java/generics/index.html – Dunes 2012-03-06 11:47:16

回答

6

您已在地圖中放置了一個Double。不要先轉換爲字符串。這將工作:

HashMap<String, Double> listMap = new HashMap<String, Double>(); 
mvalue = listMap.get("mvalue"); 

您的原始雙重被自動複製到雙重對象。使用泛型避免需要投射,這是<String, Double>部分。

1

怎麼樣

mvalue = listMap.get("mvalue"); 

0

首先,請與定義,像類類型的HashMap:HashMap<String,Double>

其次,這應該工作:

mvalue = Double.parseDouble(Double.toString(listMap.get("mvalue"))); 

雖然,最好的辦法是:

mvalue = listMap.get("mvalue"); 
// provided defined HashMap is HashMap<String,Double> 
+0

如果map存儲double值,那麼爲什麼要解析它呢?在這裏你正在做2不必要的解析。首先雙擊字符串,然後再次雙擊字符串。 – 2012-03-06 11:45:14

+0

當然,它可以工作,但爲什麼要經歷在字符串和Double之間來回轉換的麻煩,當該值已經是Double? – claesv 2012-03-06 11:46:36

+0

是啊我knw ..而我修改我的答案,以滿足其需要..但我想告訴@yyy我777,如何去在這種情況下..! – 2012-03-06 11:47:49

2

如果你會引入仿製藥,你會發現問題

Map<String, Double> listMap = new HashMap<String, Double>(); 
Double mvalue = listMap.get("mvalue"); 

原因是,你的地圖確實返回一個Double而不是String,因此是錯誤信息。

0

試試這個:

HashMap<String, Double> listMap = new HashMap<String, Double>(); 
Double mvalue = 0.0; 
listMap.put("mvalue", mvalue); 
mvalue = listMap.get("mvalue"); 
1

我猜你的地圖將存儲許多diferents類型,因此我建議<字符串,對象>通用

HashMap listMap = new HashMap<String, Object>(); 
double mvalue =0.0; 
listMap.put("mvalue",mvalue); 
. 
. 
. 
String mValueString = Double.toString((Double) listMap.get("mvalue")); 

這將讓你的雙目標,將其轉換爲Double,並將其轉換爲新變量中的字符串。

0

你的代碼應該是這樣的:

請注意,如果您需要檢索的包裝,而不是一個原始類型,你可以在包裝類XXX.valueOf()而不是使用XXX.parseXXX()它返回一個原語。

0
mvalue = Double.parseDouble(String.valueOf(listMap.get("mvalue"))); 
相關問題