有人可以帮助我将以下语句转换为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();
}
}
}
答案 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
整件事。