如何使用Java Stream Api替换此代码?
for (Book book : Books.getAllBooks()) {
for (SearchResult searchResult : searchResultList) {
if (searchResult.getTableName().replace("attr_", "") .equals(book.getTableName())) {
bookList.add(book);
}
}
}
Run Code Online (Sandbox Code Playgroud)
List<Book> bookList = Books.getAllBooks().stream()
.filter(e -> searchResultList.stream()
.anyMatch(f -> e.getTableName().equals(f.getTableName().replace("attr_", ""))))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
我来自C#,错过了Java 8 API中的该功能,所以我编写了自己的功能。使用streamjoin可以编写
Stream<Book> books =
join(Books.getAllBooks().stream())
.withKey(Book::getTableName)
.on(searchResultList.stream())
.withKey(SearchResult::getTableName)
.combine((book, searchResult) -> book)
.asStream()
Run Code Online (Sandbox Code Playgroud)