通过键排序我有一个简单地用三个值类:收集通过流
class Book{
private String title;
private String author;
private double price;
}
title
是唯一的(总是)。系统中有一个选定的标题列表(如List<String>
)和每个Book
的列表。我想从标题列表中获得所有Book
。我的代码是:
List<Book> allBooks = getAllBooks();
List<String> selectedTitles = getSelectedTitles();
List<Book> selectedBooks = allBooks.stream().
filter(x -> selectedTitles.contains(x.getTitle())).
collect(Collectors.toList());
它的工作原理,但selectedBooks被下令allBook
insted的的selectedTitles
。例如:?
allBooks(only title) = {"A","B","C","D"}
selectedTitles = {"B","A","D"}
selectedBooks(only title) = {"A","B","D"}
怎么可能(通过stream()
得到由selectedTitles
排序(在这个例子应该是{"B","D","A"}
第一个s解决方案不起作用(它按字母顺序对'selectedBooks'进行排序,而不是按'selectedTitles'顺序排序)。让我检查第二个 –
@RealSkeptic哦,我在问题中看到了“B,D”,并立即认为OP需要字母顺序。我正在考虑另一种解决方案! – Sweeper
@joepaulens查看最新的答案。 – Sweeper