我不是100%关于如何做到这一点。但我会先解释一下情况。
我让用户搜索图书并根据搜索中的第一个结果提供10条推荐。我将推荐的图书存储在RecommendBooks(POJO)
,一旦我有推荐的图书,我就会对另一个POJO BookReview(POJO)
中存储的每本图书进行审核。
意向:现在我想根据评论显示推荐的图书
我有点坚持如何对评论进行排序,而不是基本上创建一个基于评论订购的推荐书的副本。
任何人都有这样做的好方法吗?
答案 0 :(得分:0)
参加以下课程:
class Book {
String id;
String name;
}
class Review {
String bookId;
String text;
}
class QueryResult {
Book book;
Review review;
}
首先你会得到10本推荐书籍:
List<Book> recommended = queryFor10RecommendedBooks();
然后获取评论并将所有内容包装在List<QueryResult>
:
List<QueryResult> result = recommended.stream()
.map(b -> new QueryResult(book, getReviewForBook(b)))
.collect(Collectors.toList());
此代码将一次查询一个评论。您还可以优化它以查询所有10本书的所有评论,然后将它们放在一起。取决于您的数据结构/数据库更快。
其他不错的方法是将结果设为Map<Book, Review>
,这也很简单:
Map<Book, Review> result = recommended.stream()
.collect(Collectors.toMap(Function.identity(), b -> getReviewForBook(b)));