通過鍵排序我有一個簡單地用三個值類:收集通過流
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