Guest User

Untitled

a guest
Mar 31st, 2018
353
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.65 KB | None | 0 0
  1. // 1
  2.  
  3.     private Map<String, List<Book>> createCategoryToBooksListMap(List<Book> allBooks) {
  4.         return allBooks
  5.                 .map(toCategoriesAndBooksList())
  6.                 .flatMap(fromListOfList())
  7.                 .groupBy(category())
  8.                 .mapValues(toBooksList());
  9.     }
  10.  
  11.     private Function<Book, List<Tuple2<String, Book>>> toCategoriesAndBooksList() {
  12.         return book -> List.of(book.getCategories()).map(category -> Tuple.of(category, book));
  13.     }
  14.  
  15.     private Function<List<Tuple2<String, Book>>, Iterable<? extends Tuple2<String, Book>>> fromListOfList() {
  16.         return list->list;
  17.     }
  18.  
  19.     private Function<Tuple2<String, Book>, String> category() {
  20.         return t -> t._1;
  21.     }
  22.  
  23.     private Function<List<Tuple2<String, Book>>, List<Book>> toBooksList() {
  24.         return v->v.map(t->t._2);
  25.     }
  26.  
  27.  
  28. // 2
  29.     private Map<String, List<Book>> createCategoryToBooksListMap(List<Book> allBooks) {
  30.         return allBooks
  31.                 .map(this::toCategoriesAndBooksList)
  32.                 .flatMap(this::fromListOfLists)
  33.                 .groupBy(this::category)
  34.                 .mapValues(this::toBooksList);
  35.     }
  36.  
  37.     private List<Tuple2<String, Book>> toCategoriesAndBooksList(Book book) {
  38.         return List.of(book.getCategories()).map(category -> Tuple.of(category, book));
  39.     }
  40.  
  41.     private List<Tuple2<String, Book>> fromListOfLists(List<Tuple2<String, Book>> list) {
  42.         return list;
  43.     }
  44.  
  45.     private String category(Tuple2<String, Book> t) {
  46.         return t._1;
  47.     }
  48.  
  49.     private List<Book> toBooksList(List<Tuple2<String, Book>> v) {
  50.         return v.map(t->t._2);
  51.     }
Advertisement
Add Comment
Please, Sign In to add comment