2017-02-24 67 views
-2

我正在開發使用Java。
我試圖使用'for'語句,但出現錯誤。如何使用這個數據結構?

列表結構:

[{spcs=Lactuca amurensis}, {spcs=Lactuca aquarrosa}, {spcs=Lactuca aquarrosa var. dentata}, {spcs=Lactuca aquarrosa var. integrifolia}, {spcs=Lactuca brevirostris}, {spcs=Lactuca indica}, {spcs=Lactuca indica for. runcinata}, {spcs=Lactuca indica var. indivisa}, {spcs=Lactuca indica var. laciniata for. indivisa}, {spcs=Lactuca indica var. laciniata for. Indivisa}, {spcs=Lactuca laciniata for. indivisa}, {spcs=Lactuca squarrof for. indivisa}, {spcs=Lactuca squarrosa}, {spcs=Prenanthes squarrosa}] 

代碼:

for(String param : structure){ 
    System.out.println(param); 
} 

但是,只有錯誤。

java.lang.reflect.InvocationTargetException 
java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.String 

如何使用結構?


啊,謝謝!我解決了它,謝謝你!

for(HashMap<String, String> param : structure){ 
    System.out.println(param.get("spcs")); 
} 
+0

這聽起來像你正在使用原始類型。你是否將你的列表簡單地聲明爲'List',或者是列表'?不知何故,你似乎已經把'HashMap'放入了應該是一個字符串列表的東西。如果您在任何地方都使用參數化類型(泛型),那麼這應該是不可能的,但如果使用原始類型,則可以將類型參數放在列表中。 –

+0

哦,謝謝。它有幫助。 –

回答

0

structure似乎是HashMapList。如果是這種情況,您需要遍歷列表,然後遍歷每個HashMap中的密鑰集,然後獲取該HashMap中每個密鑰的值。

要做到這一點,請使用以下循環:

for(HashMap<String,String> map: structure){ 
    for(String key: map){ 
     System.out.println(key + ": " + map.get(key)); 
    } 
} 

希望這有助於!

+0

謝謝,但我的解釋還不夠。 結構類型是列表

+0

我試圖使用鍵集,但我得到一個錯誤。 –

+0

錯誤:方法keyset()未定義類型列表

0

該錯誤表明該結構具有HashMap的集合,而不是Strings(java.lang.ClassCastException:java.util.HashMap不能轉換爲java.lang.String)。

您需要將for循環中的第一項更改爲HashMap。 (HashMap param:structure) {

然後,它將取決於您要打印的內容。從HashMap文檔(https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html)中,可以執行param.keySet()獲取您的密鑰,param.values()獲取值,param.get(key)獲取與某個鍵關聯的值。

+0

謝謝。我沒想過要使用hashmap。 –

相關問題