Потоки Java 8: как я могу передать другой поток. Как я могу преобразовать код в потоки java8 - PullRequest
0 голосов
/ 15 октября 2018

Может кто-нибудь помочь мне преобразовать приведенные ниже операторы в 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 голосов
/ 15 октября 2018
return someMap.values().stream()
           .map(Pair::getKey)
           .flatMap(List::stream)
           .filter(file -> 
               file.getId().endsWith(transmittedFileId)
           ).findFirst().map(XYZFiles::getOriginId).orElse(null);

Я думаю, что должен это сделать.Он в основном делает это плоской картой, которая объединяет все эти списки в один большой поток и filter s в целом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...