-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);
可能是很簡單,但我堅持。
''myHashMaps認爲擁有包含HashMap的名單列表。當你從myHashMaps獲得一個項目時,你會得到一個HashMap列表而不是一個HashMap。 –
'myHashMaps.get(0);'返回'列表'。 'List!= HashMap' –
事實上,你甚至在做*投*應該是你做錯了事的標誌。 *泛型*的要點是編譯器知道所有的類型,所以你不必施放任何東西。 – Andreas