This commit is contained in:
Looly 2022-01-08 18:54:55 +08:00 committed by lsx0310
parent fd021c5f9c
commit 94a57408e9
3 changed files with 18 additions and 3 deletions

View File

@ -6,8 +6,11 @@
# 5.7.20 (2022-01-08) # 5.7.20 (2022-01-08)
### 🐣新特性 ### 🐣新特性
* 【core 】 增加对null值友好的groupingBy操作的Collector实现可指定map类型pr#498@Gitee
*
### 🐞Bug修复 ### 🐞Bug修复
* 【core 】 修复setter重载导致匹配错误issue#2082@Github * 【core 】 修复setter重载导致匹配错误issue#2082@Github
* 【core 】 修复RegexPool汉字匹配范围小问题pr#2081@Github
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------
# 5.7.19 (2022-01-07) # 5.7.19 (2022-01-07)

View File

@ -6,7 +6,14 @@ import cn.hutool.core.map.MapUtil;
import cn.hutool.core.stream.CollectorUtil; import cn.hutool.core.stream.CollectorUtil;
import cn.hutool.core.stream.StreamUtil; import cn.hutool.core.stream.StreamUtil;
import java.util.*; import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collector; import java.util.stream.Collector;

View File

@ -1,8 +1,13 @@
package cn.hutool.core.stream; package cn.hutool.core.stream;
import cn.hutool.core.lang.Opt;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import java.util.*; import java.util.Collections;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
import java.util.StringJoiner;
import java.util.function.BiConsumer; import java.util.function.BiConsumer;
import java.util.function.BinaryOperator; import java.util.function.BinaryOperator;
import java.util.function.Function; import java.util.function.Function;
@ -84,7 +89,7 @@ public class CollectorUtil {
Supplier<A> downstreamSupplier = downstream.supplier(); Supplier<A> downstreamSupplier = downstream.supplier();
BiConsumer<A, ? super T> downstreamAccumulator = downstream.accumulator(); BiConsumer<A, ? super T> downstreamAccumulator = downstream.accumulator();
BiConsumer<Map<K, A>, T> accumulator = (m, t) -> { BiConsumer<Map<K, A>, T> accumulator = (m, t) -> {
K key = Optional.ofNullable(t).map(classifier).orElse(null); K key = Opt.ofNullable(t).map(classifier).orElse(null);
A container = m.computeIfAbsent(key, k -> downstreamSupplier.get()); A container = m.computeIfAbsent(key, k -> downstreamSupplier.get());
downstreamAccumulator.accept(container, t); downstreamAccumulator.accept(container, t);
}; };