java - 在映射中查找枚举值以初始化列表

标签 java enums java-8 maps

假设我有以下Map并调用writeMetadata(...):

Map<Report, TransferStatus> transferStatusMap = sftpService.transfer(reportDeliverables);

dbMetadataWriter.writeMetadata(successReports);

ENUM 为:

public enum TransferStatus {
    SUCCESS,
    FAILURE
}

首先,如何使用 Java 8 创建包含状态为 TransferStatus.SUCCESS 的所有 ReportsuccessReport 列表?

其次,在调用dbMetadataWriter.writeMetadata(successReports);之前,应该检查是否存在任何成功的值。

最后,一般来说,失败的传输应该如何处理?实际上,什么是最佳实践?

最佳答案

 List<Report> successReports = transferStatusMap.entrySet()
          .stream()
          .filter(e -> e.getValue() == TransferStatus.SUCCESS)
          .map(Entry::getKey)
          .collect(Collectors.toList());

 if(!reports.isEmpty()){
     dbMetadataWriter.writeMetadata(successReports);
 }

或者您可以将它们都收集到 map :

Map<TransferStatus, List<Report>> map = 
     transferStatusMap.entrySet()
                      .stream()
                      .collect(Collectors.groupingBy(
                            Entry::getValue,
                            Collectors.mapping(Entry::getKey, Collectors.toList()));

关于java - 在映射中查找枚举值以初始化列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46542765/

相关文章:

java - 将文件打开到JLabel中

Java - 初学者代码,添加分数

java - 将 "this"传递给 this() 或 super()

java - 如何从字符串中选择特定值并将其转换为整数

c# - 使用初始化器循环遍历枚举会产生意想不到的结果

c# - 简单比较枚举是否在枚举列表中

java - Nashorn 的 IllegalArgumentException 异常 - 它是 Java 8 中的错误吗?

c++ - 枚举与宏状态 C++

java - 流分组By : reducing to first element of list

Java 8 Stream 通过相同的昂贵方法调用进行过滤和分组