Java 8 Streams:如何流式传输另一个流。如何将代码转换为 java8 流

Div*_*Div 2 java-8

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

我有一个这样的哈希图:

private Map<String, Pair<List<XYZFiles>, List<XYZFiles>>> someMap;
Run Code Online (Sandbox Code Playgroud)

我想在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();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Swe*_*per 5

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

我认为应该这样做。它基本上是做平面地图,将所有这些列表扁平化成一个大流,并filter完成整个事情。