2015-08-30 54 views
-2

我遇到了哈希映射列表ArrayList的問題。我試圖投它,但它是不允許的。這是有問題的代碼:無法從ArrayList轉換爲HashMap

List<List<HashMap>> myHashMaps = AsyncMusicHashMap.fillHashMap(path); 
HashMap<String, String> artistHashMap = (HashMap<String, String>) myHashMaps.get(0); 
HashMap<String, List<String>> albumHashMap = (HashMap<String, List<String>>) myHashMaps.get(1); 
HashMap<String, List<String>> songHashMap = (HashMap<String, List<String>>) myHashMaps.get(2); 

有以下異常消息:

Exception in thread "main" java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.HashMap 
    at com.bkane56.mp3.MP3HandlingDAO.addMusicToDatabase(MP3HandlingDAO.java:51) 
    at com.bkane56.mp3.MP3Handler.main(MP3Handler.java:21) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) 

類MP3HandlingDAO所提到的第51行是:

HashMap<String, String> artistHashMap = (HashMap<String, String>) myHashMaps.get(0); 

可能是很簡單,但我堅持。

+3

''myHashMaps認爲擁有包含HashMap的名單列表。當你從myHashMaps獲得一個項目時,你會得到一個HashMap列表而不是一個HashMap。 –

+0

'myHashMaps.get(0);'返回'列表'。 'List!= HashMap' –

+2

事實上,你甚至在做*投*應該是你做錯了事的標誌。 *泛型*的要點是編譯器知道所有的類型,所以你不必施放任何東西。 – Andreas

回答

-1

他在聲明中錯誤:

List<List<HashMap>> myHashMaps = AsyncMusicHashMap.fillHashMap(path); 

我想是因爲如果你投myHashMaps.get(0)到HashMap中,你的清單參數,也許一個HashMap(字符串,字符串該指令可以解決你的問題)。這一聲明再次嘗試:

List<HashMap(String, String)> myHashMaps = AsyncMusicHashMap.fillHashMap(path); 

感謝

相關問題