Java 通过流按键排序的集合

Java 通过流按键排序的集合,java,java-8,java-stream,Java,Java 8,Java Stream,我有一个简单的类,有三个值: class Book{ private String title; private String author; private double price; } 标题是唯一的(始终)。系统中有一个选定标题列表(如list)和每本书籍的列表。我想从标题列表中获取所有带有键的书籍。我的代码是: List<Book> allBooks = getAllBooks(); List<String> selectedTitles =

我有一个简单的类,有三个值:

class Book{
   private String title;
   private String author;
   private double price;
}
标题
是唯一的(始终)。系统中有一个选定标题列表(如
list
)和每本
书籍的列表。我想从标题列表中获取所有带有键的
书籍
。我的代码是:

List<Book> allBooks = getAllBooks();
List<String> selectedTitles = getSelectedTitles();
List<Book> selectedBooks = allBooks.stream().
   filter(x -> selectedTitles.contains(x.getTitle())).
   collect(Collectors.toList());

(通过
stream()
如何通过
selectedTitles
?)进行排序(在本例中,它应该是
{“B”、“D”、“A”}

不要排序,只需查找已选择的书籍:

List<Book> allBooks = getAllBooks();
List<String> selectedTitles = getSelectedTitles();

Map<String,Book> titleToBook = allBooks.stream()
    .collect(Collectors.toMap(Book::getTitle, Function.identity()));

List<Book> selectedBooks = selectedTitles.stream()
    .map(titleToBook::get).filter(Objects::nonNull)
    .collect(Collectors.toList());
List allBooks=getAllBooks();
List selectedTitles=getSelectedTitles();
Map titleToBook=allBooks.stream()
.collect(Collectors.toMap(Book::getTitle,Function.identity());
List selectedBooks=selectedTitles.stream()
.map(titleToBook::get).filter(对象::非空)
.collect(Collectors.toList());
List<Book> allBooks = getAllBooks();
List<String> selectedTitles = getSelectedTitles();

Map<String,Book> titleToBook = allBooks.stream()
    .collect(Collectors.toMap(Book::getTitle, Function.identity()));

List<Book> selectedBooks = selectedTitles.stream()
    .map(titleToBook::get).filter(Objects::nonNull)
    .collect(Collectors.toList());