Итерация по карте карт - PullRequest
       13

Итерация по карте карт

0 голосов
/ 11 октября 2019

У меня есть карта карт. Я хочу перебрать каждую запись и получить из нее значение. Ниже приводится мой код, который я использую, но я получаю исключение. Я не знаю, что не так с моим кодом.

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)

1 Ответ

1 голос
/ 11 октября 2019

Вы получаете ошибку, потому что после создания 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()));
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...