我将LinkedHashMap<String, LinkedHashMap<Date, Double>>
打包到带有;
List<LinkedHashMap<String, LinkedHashMap<Date, Double>>> list = new ArrayList(mainCodesMap.entrySet());
mainCodeMap
的类型为Map<String, Map<Date, Double>>
事情是列表没有问题,但是,当我尝试在for循环中按索引获取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
答案 0 :(得分:2)
List<LinkedHashMap<String, LinkedHashMap<Date, Double>>> list = new ArrayList(mainCodesMap.entrySet());
mainCodesMap.entrySet
会返回Set<Map.Entry<...>>
(不是字面...
)。然后,您创建一个包含这些ArrayList
的{{1}}。因为您使用的是原始类型Map.Entry
(而不是ArrayList
),编译器无法捕获此问题。
看起来你真的是这个意思:
ArrayList<something>
注意:List<LinkedHashMap<String, LinkedHashMap<Date, Double>>> list = new ArrayList<>();
list.add(mainCodesMap)
表示编译器会自动填写&lt;&gt ;.它并不适用于所有情况。