У меня есть представление о том, как это может работать, но, похоже, должен быть более элегантный способ сделать это.
Set<List<SearchResult>> searchResults = new HashSet<>();
…
return searchResults.stream()
.reduce((sr1, sr2) -> {
sr1.retainAll(sr2);
return sr1;
})
.get().stream()
.sorted(Comparator.comparing(SearchResult::getDocno))
.collect(Collectors.toList());
Я транслирую Сет, нахожу пересечение с retainAll()
- пока все хорошо. Но тогда Optional.get()
нужно снова транслировать, чтобы я мог его отсортировать. Это не кажется правильным. Кроме того, моя IDE предполагает, что мне нужна проверка isPresent()
, но я не уверен, как это сделать.
Примечание: я могу легко сделать это с помощью циклов, но мне больше интересно научиться работать с потоками.