qua*_*ela 5 java list map classcastexception linkedhashmap
我被包裹LinkedHashMap<String, LinkedHashMap<Date, Double>>在一个列表中;
List<LinkedHashMap<String, LinkedHashMap<Date, Double>>> list = new ArrayList(mainCodesMap.entrySet());
Run Code Online (Sandbox Code Playgroud)
这mainCodeMap是类型Map<String, Map<Date, Double>>
问题是列表没有问题,但是,当我尝试在 for 循环中按索引获取列表元素时;
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();
..
..
}
Run Code Online (Sandbox Code Playgroud)
jvm throwsClassCastException说;
java.lang.ClassCastException: java.util.LinkedHashMap$Entry cannot be cast to java.util.LinkedHashMap
Run Code Online (Sandbox Code Playgroud)
List<LinkedHashMap<String, LinkedHashMap<Date, Double>>> list = new ArrayList(mainCodesMap.entrySet());
Run Code Online (Sandbox Code Playgroud)
mainCodesMap.entrySet返回 a Set<Map.Entry<...>>(不是字面意思...)。然后您创建一个ArrayList包含这些Map.Entrys. 因为您使用的是原始类型ArrayList(而不是ArrayList<something>),所以编译器无法捕获此问题。
看起来你实际上是这个意思:
List<LinkedHashMap<String, LinkedHashMap<Date, Double>>> list = new ArrayList<>();
list.add(mainCodesMap)
Run Code Online (Sandbox Code Playgroud)
注:ArrayList<>表示编译器会自动填写<>。它并不适用于所有情况。
| 归档时间: |
|
| 查看次数: |
15675 次 |
| 最近记录: |