java - 无法迭代包含链接 HashMap 的数组列表

标签 java linkedhashmap

我正在尝试使用 for 循环迭代 Object 类的 ArrayList 实例:

for(PayloadDTO payloadDTO:payloadDTOList) {
    if(payloadDTO.getEntType().equals(CommonConstants.CUSTOMENTTYPEROLEID.RES_ROLE_TYPE)) {
        resRoleNameList.add(payloadDTO.getEntName());
    } 
}

enter image description here

这给了我以下错误:

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.alnt.fabric.external.model.PayloadDTO
    at com.alnt.fabric.external.rbac.service.ExternalFabricService.loadImpactedUserCount(ExternalFabricService.java:384)
    at com.alnt.fabric.external.rbac.controller.ExternalFabricController.loadImpactedUserCount(ExternalFabricController.java:160)
    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)

所以我尝试使用下面的代码对其进行转换:

payloadDTOList = convert(payloadDTOList.toString(), List<PayloadDTO.class>);


    public static <T> T convert(String json, Class<T> type) throws ALNTApplicationException {
    ObjectMapper mapper = new ObjectMapper();
    try {
        return mapper.readValue(json, type);
    } catch (Exception e) {
        throw new ALNTApplicationException(FabricComponentErrorCodes.ACTION_HANDLER_ERROR_CODE,"Object conversion error");
    }
}

最佳答案

您可以迭代 ArrayList 并基于它创建一个新的对象列表。然后您可以使用 forEach 迭代 PayloadDTOList2。

List<PayloadDTO> payloadDTOList2 = new ArrayList<>();
for (int i=0; i < payloadDTOList.size(); i++) {
   LinkedHashMap<String,String> linkedHash = (LinkedHashMap<String, String>) payloadDTOList.get(i);
   PayloadDTO payloadDTO =  new PayloadDTO();
   payloadDTO.setEntType(linkedHash.get("EntType"));
   payloadDTO.setEntName(linkedHash.get("EntName"));
   payloadDTOList2.add(payloadDTO);
}

关于java - 无法迭代包含链接 HashMap 的数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54566887/

相关文章:

java - akka Actor 没有按预期工作

java - 为什么 Kafka Direct Stream 会为每条消息创建一个新的解码器?

java - 什么时候在 java 中使用 linkedhashmap 而不是 hashmap?

java - 为什么我无法将嵌入的 ArrayList<Integer> 分配给本地声明的 ArrayList<Integer>?

java - LinkedHashMap 具有访问内部链表的方法

java - 将两个 LinkedHashMap 与值作为列表进行比较

java - 并发修改异常问题

java - 实体监听器调用顺序

java - 没有 else 的条件三元

java - 使用c :import to load Spring MVC View into div