stream流

根据cardId分组,取最大时间
Map collect = list.parallelStream().collect(
        Collectors.toMap(UserInfo::getCardId, Function.identity(), (c1, c2) -> c1.getCreateTime() > c2.getCreateTime() ? c1 : c2));
根据userid分组,values字段求和
list.stream().collect(Collectors.groupingBy(User::getUserId,
           Collectors.reducing(BigDecimal.ZERO, 
                User::getValues, BigDecimal::add)));

单子段分组

personList.stream().collect(Collectors.groupingBy(Person::getGender));

多字段分组

 

// 定义一个函数Function,该函数将元素对象映射到一个键的集合里
        Function> compositeKey = person ->
                Arrays.asList(person.getGender(), person.getAge(), person.getType());

        // 分组
        Map, List> groupingMap =
                personList.stream().collect(Collectors.groupingBy(compositeKey, Collectors.toList()));

你可能感兴趣的:(java)