我将LinkedHashMap<String, LinkedHashMap<Date, Double>>封装到一个列表中;
List<LinkedHashMap<String, LinkedHashMap<Date, Double>>> list = new ArrayList(mainCodesMap.entrySet());哪种mainCodeMap是Map<String, Map<Date, Double>>的类型
然而,当我尝试在for循环中按索引获取list的元素时,问题是list没有问题,比如;
for (int i = 0; i < correMatrix.length; i++) {
LinkedHashMap<String, LinkedHashMap<Date, Double>> entryRow = list.get(i);
LinkedHashMap<Date, Double> entryRowData = (LinkedHashMap<Date, Double>) entryRow.values();
..
..
}jvm抛出ClassCastException,它说;
java.lang.ClassCastException: java.util.LinkedHashMap$Entry cannot be cast to java.util.LinkedHashMap发布于 2014-01-19 19:08:27
List<LinkedHashMap<String, LinkedHashMap<Date, Double>>> list = new ArrayList(mainCodesMap.entrySet());mainCodesMap.entrySet返回一个Set<Map.Entry<...>> (而不是字面上的...)。然后创建一个包含这些Map.Entry的ArrayList,因为您使用的是原始类型ArrayList (而不是ArrayList<something>),所以编译器无法捕获这个问题。
看起来你真的是这个意思:
List<LinkedHashMap<String, LinkedHashMap<Date, Double>>> list = new ArrayList<>();
list.add(mainCodesMap)注意:ArrayList<>表示编译器会自动填充<>。它并不是在所有的上下文中都能工作。
https://stackoverflow.com/questions/21215681
复制相似问题