1.对集合按照单个属性分组

e.g. 按照skuId分组

Map<String, List<EntryDeliveryDetailywk>> detailsMap01 = dtos1.stream()
.collect(Collectors.groupingBy(EntryDeliveryDetailywk::getskuId));

2对集合按照多个属性分组

solution 1 多个属性拼接出一个组合属性

将多个字段拼接成一个新字段,在使用Java8的groupBy进行分组

Map<String, List<EntryDeliveryDetailywk>> detailmap = details.stream()
.collect(Collectors.groupingBy(d -> fetchGroupKey(d) ));
private String fetchGroupKey(EntryDeliveryDetailywk detail){
        return detail.getSkuId().toString() 
        + detail.getItemsName() 
        + detail.getWarehouseId().toString()   
        + detail.getSupplierId().toString();

solution 2 造静态内部类

在集合元素类里构造静态内部类(成员变量即分组的对应多个属性)
e.g.

//静态内部类
class Person {
    public static class NameAge {
        public NameAge(String name, int age) {
        // 注意 重写方法 must implement equals and hash function
    public NameAge getNameAge() {
        return new NameAge(name, age);
Map<NameAge, List<Person>> map = people.collect(Collectors.groupingBy(Person::getNameAge));

solution 3 嵌套调用Java8 groupby

注意得到也是嵌套map

Map<String, Map<Integer, List<Person>>> map = people
    .collect(Collectors.groupingBy(Person::getName,
        Collectors.groupingBy(Person::getAge));
map.get("Fred").get(18);

https://stackoverflow.com/questions/28342814/group-by-multiple-field-names-in-java-8#

场景:Java8的groupBy实现集合的分组,类似Mysql的group by分组功能,注意得到的是一个map1.对集合按照单个属性分组e.g. 按照skuId分组Map&amp;amp;amp;lt;String, List&amp;amp;amp;lt;EntryDeliveryDetailywk&amp;amp;amp;gt;&amp;amp;amp;gt; detailsMap01 = dtos1.stream().collect(Collectors.groupi...
Stream流-分组操作 文章目录Stream流-分组操作方法1,`groupingBy(Function)`方法2,`groupingBy(Function,Collector)`方法3:`groupingBy(Function,Supplier,Collector)` Collectors.groupingBy()3个方法的使用示例 /**员工 * @author Yang * @create 2020-07-09 19:57 public class Employee {
对List进行分组java8的Stream 分组groupBy 的使用) 最近在做一个功能:对一个接口接收的List数据进行校验,同一个订单里的一个产品id只能添加一次。本来想是在入库的时候通过SQL语句进行处理的。但是由于这个数据接口之前同事写了很多的校验,是在是又*又长。在度娘上查一下,发现了JAVA8 可以通过Stream对List进行处理(这里主要是关于分组的); Order order1 = new Order(); order1.setOrderId("123"); Order1.
java 8 集合分组 在继续阅读Venkat Subramaniam的“ Java函数式编程 ”时,我到达了介绍Stream#collect函数的那部分。 我们想收集一个人,按年龄分组并返回一张方便的地图(年龄->人的名字)。 要刷新,这是Person类的样子: static class Person { private String name; privat...