假设我有以下Map
并调用writeMetadata(...)
:
Map<Report, TransferStatus> transferStatusMap = sftpService.transfer(reportDeliverables);
dbMetadataWriter.writeMetadata(successReports);
ENUM
为:
public enum TransferStatus {
SUCCESS,
FAILURE
}
首先,如何使用 Java 8 创建包含状态为 TransferStatus.SUCCESS
的所有 Report
的 successReport
列表?
其次,在调用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/