待处理数据
@Data
public class Book {
private String name;
private Integer category;
private Integer level;
private String author;
private Double price;
}
groupingBy使用
@Test
public void groupingBy(){
Map<Integer, List<Book>> category2Books = books.stream().collect(Collectors.groupingBy(Book::getCategory));
System.out.println(category2Books);
Map<Integer, Long> collect = books.stream().collect(Collectors.groupingBy(Book::getCategory, Collectors.counting()));
System.out.println(collect);
Map<Integer, Double> collect1 =
books.stream().collect(Collectors.groupingBy(Book::getCategory, Collectors.summingDouble(Book::getPrice)));
System.out.println(collect1);
TreeMap<Integer, Optional<Book>> collect2 = books.stream().collect(Collectors.groupingBy(Book::getCategory, TreeMap::new,
Collectors.maxBy(Comparator.comparingDouble(Book::getPrice))));
System.out.println(collect2);
}