Я сталкивался со случаем, когда мне нужно преобразовать List<Book>
в Map<String, Book>
, и единственное решение, которое я могу найти, это как Map<String, List<Book>>
.
Сам класс выглядит следующим образом (япропущенные геттеры / сеттеры и конструкторы):
public class Book {
private String asin;
private String author;
private String title;
}
Я хочу отобразить все книги по определенным уникальным ключам, поэтому вероятность дублирования либо пренебрежимо мала, либо 0
.
Я пытался сделатьэто так:
Map<String, Book> booksByAsinAndTitle = books.stream()
.collect(Collectors.groupingBy((book) -> book.getAsin() + "||" + book.getTitle()))
.entrySet()
.stream()
.collect(Collectors.toMap(x -> x.getKey(), x -> x.getValue().get(0)));
Это работает, но выглядит некрасиво, трудно читаемо и не очень приятно иметь в базе кода, потому что это может смутить моих коллег.Есть ли лучший способ java 8
добиться того же результата?