在 Java 中迭代 Map 时如何在内部迭代和分配 List 对象的值

How to iterate and assign values of List object internally when Iterating over Map in Java

public List<ErrorMessage> getErrorMessageDetails(ValidationResult validationResult, String severity) {

        Map<List<String>, List<String>> errorObjectsMap = new HashMap<>();

       //errorCode= some values in List of strings
       //errorMessage= some values in List of strings

        errorObjectsMap.put(errorCode, errorMessage);

        List<ErrorMessage> errorMessageList = new ArrayList<>();

        for (Map.Entry<List<String>, List<String>> pair : errorObjectsMap.entrySet()) {
            List<String> errorCodeMsg = pair.getKey() == null ? new ArrayList<>() : pair.getKey();
            List<String> errorMsg = pair.getValue() == null ? new ArrayList<>() : pair.getValue();

            errorMessageList.add(new ErrorMessage(errorCodeMsg.get(0), errorMsg.get(0)));

// So in above line of code i want to iterate both list k,v and use its keys and values to create list of List<ErrorMessage> errorMessageList dynamically without using index of lists

        }
        return errorMessageList;
    }

建议请参考以上java方法

有人可以帮忙编写逻辑以在 java 中以最简洁的方式动态迭代吗?

提前谢谢你:)

所提供的方法不使用任何输入参数 validationResultseverity,它表明映射仅包含一个条目。

但是,要简单地构建错误消息列表,可以使用 Stream API 将映射条目流转换为 ErrorMessage 列表,其中映射条目中的列表由IntStreamflatMap 提供的索引用于连接所有条目的错误消息:

public List<ErrorMessage> getErrorMessageDetails(ValidationResult validationResult, String severity) {

    Map<List<String>, List<String>> errorObjectsMap = new HashMap<>();

    //errorCode= some values in List of strings
    //errorMessage= some values in List of strings

    errorObjectsMap.put(errorCode, errorMessage);
    // assuming there are more entries

    return errorObjectsMap.entrySet()
        .stream() // Stream<Map.Entry<List<String>, List<String>>>
        .filter(e -> e.getKey() != null && e.getValue() != null
            && !e.getKey().isEmpty() && !e.getValue().isEmpty()
        )
        .flatMap(e -> IntStream.range(0, Math.min(e.getKey().size(), e.getValue().size()))
                .mapToObj(i -> new ErrorMessage(
                    e.getKey().get(i), e.getValue().get(i)
                )) // Stream<ErrorMessage>
        )
        .collect(Collectors.toList());
}