java - 迭代地图的地图
问题描述
我有一张地图。我想遍历每个条目并从中获取价值。以下是我正在使用的代码,但出现异常。我不知道我的代码有什么问题。
for(Map.Entry<String, Object> entry : map.entrySet()){
for (Map.Entry<String, Object> entry2 : ((Map<String, Object>)(Object) entry).entrySet()){
sheet.addCell(new Label(c++, r+1, (String) entry2.getValue()));
}
}
以下是我的堆栈跟踪:
java.lang.ClassCastException: java.util.HashMap$Node cannot be cast to java.util.Map
at com.vz.stamps.services.TestServiceForOrderPopup.addExcelOutputHeader(TestServiceForOrderPopup.java:97)
at com.vz.stamps.services.TestServiceForOrderPopup.createExcelOutputExcel(TestServiceForOrderPopup.java:56)
at com.vz.stamps.controller.OrderviewOpenDriverController.downloadExcelOutputExl(OrderviewOpenDriverController.java:152)
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:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
解决方案
您会收到错误,因为在创建第EntrySet
一个地图并将其传递给另一个迭代之后,您没有调用getValue()
. EntrySet
所以代码应该更新为:
for(Map.Entry<String, Object> entry : map.entrySet()){
for (Map.Entry<String, Object> entry2 : ((Map<String, Object>)(Object) entry.getValue()).entrySet()){
sheet.addCell(new Label(c++, r+1, (String) entry2.getValue()));
}
}
推荐阅读
- c# - 单击事件始终只获取最后一个实例化的对象(C# UNITY)
- javascript - 是否有可能在 jquery display:none 之后出现 css display:block ?
- r - 将属性应用于数据框,重写比例函数
- python - 如何检测单词的存在并在单独的列中标记问题?
- java - 如何将 MongoDB 与 Apache Lucene 集成?
- docker - 使用 Docker 设置自签名 SSL 反向代理时无法在 Laravel 项目中加载资产
- javascript - 在 React 中的 setState 中传入参数
- java - Java 代码生成跳过类型为“类”的属性
- ios - 如何在 Collection View 中给 UILabel 一个闪烁效果
- angular - 一次取消 Angular 4 中的所有待处理请求