class Human {
private String name;
private int age;
private Long sale;
public Human() {
super();
}
public Human(String name, int age, Long sale) {
this.name = name;
this.age = age;
this.sale = sale;
}
public Human(final String name, final int age) {
super();
this.name = name;
this.age = age;
}
...setter getter...
}
List<Human> humans = new ArrayList<Human>();
humans.add(new Human("sfsd", 22));
humans.add(new Human("janle", 30));
humans.add(new Human("xxx", 34, 1221L));
humans.add(new Human("xxx", 34, 101L));
//排序
humans.sort((h1, h2) -> h1.getName()
.compareTo(h2.getName()));
System.out.println(humans);
```
//分组
Map<Integer, List<Human>> groupMap =
humans.stream()
.peek(human -> System.out.println("groupingBy " + human.getName()))
.collect(groupingBy(Human::getAge))
System.out.println(groupMap.entrySet().size())
//分组统计
Map<String, Long> groupCount =
umans.stream()
.peek(human -> System.out.println("counting " + human.getName()))
.collect(Collectors.groupingBy(Human::getName, counting()))
System.out.println(groupCount)
//分区
Map<Boolean, List<Human>> partitioned =
humans.stream()
.filter(human -> null != human.getSale())
.peek(human -> System.out.println("partitioned " + human))
.collect(Collectors.partitioningBy(e -> e.getSale() > 101L))
Map<Boolean, Map<String, Long>> result =
humans.stream()
.filter(human -> null != human.getSale())
.collect(partitioningBy(e -> e.getSale() > 101L, groupingBy(Human::getName, counting())));
System.out.println("分区后分组 " + result);