Java 8 Streams:我如何流式传输另一个流,如何将代码转换成Java8流

时间:2018-10-15 17:45:18

标签: java-8

有人可以帮助我将以下语句转换为Java8:

我有一个像这样的哈希图:

private Map<String, Pair<List<XYZFiles>, List<XYZFiles>>> someMap;

我想在java8中转换以下逻辑:

private String searchFiles(String transmittedFileId) {

for (Pair<List<XYZFiles>, List<XYZFiles>> pair : someMap.values()) {
    List<XYZFiles> createdFilesList = pair.getKey();
    Optional<XYZFiles> xYZFiles= createdFilesList.stream()
                .filter(file -> 
                         file.getId().endsWith(transmittedFileId)).findFirst();
    if (xYZFiles.isPresent()) {
        return xYZFiles.get().getOriginId();
    }
  }
}

1 个答案:

答案 0 :(得分:4)

return someMap.values().stream()
           .map(Pair::getKey)
           .flatMap(List::stream)
           .filter(file -> 
               file.getId().endsWith(transmittedFileId)
           ).findFirst().map(XYZFiles::getOriginId).orElse(null);

我认为应该这样做。基本上,它会进行平面映射,将所有这些列表统一为一个大数据流,并filter整件事。