mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +08:00
!681 修复返回无法操作的对象导致无法后续操作报错问题
Merge pull request !681 from 疯狂的狮子Li/v5-master
This commit is contained in:
commit
812affd972
@ -22,7 +22,7 @@ import java.util.stream.Collectors;
|
||||
/**
|
||||
* 集合的stream操作封装
|
||||
*
|
||||
* @author 528910437@QQ.COM, VampireAchao<achao1441470436@gmail.com>
|
||||
* @author 528910437@QQ.COM, VampireAchao<achao1441470436@gmail.com>Lion Li>
|
||||
* @since 5.5.2
|
||||
*/
|
||||
public class CollStreamUtil {
|
||||
@ -55,7 +55,7 @@ public class CollStreamUtil {
|
||||
*/
|
||||
public static <V, K> Map<K, V> toIdentityMap(Collection<V> collection, Function<V, K> key, boolean isParallel) {
|
||||
if (CollUtil.isEmpty(collection)) {
|
||||
return Collections.emptyMap();
|
||||
return MapUtil.newHashMap(0);
|
||||
}
|
||||
return toMap(collection, (v) -> Opt.ofNullable(v).map(key).get(), Function.identity(), isParallel);
|
||||
}
|
||||
@ -88,7 +88,7 @@ public class CollStreamUtil {
|
||||
*/
|
||||
public static <E, K, V> Map<K, V> toMap(Collection<E> collection, Function<E, K> key, Function<E, V> value, boolean isParallel) {
|
||||
if (CollUtil.isEmpty(collection)) {
|
||||
return Collections.emptyMap();
|
||||
return MapUtil.newHashMap(0);
|
||||
}
|
||||
return StreamUtil.of(collection, isParallel)
|
||||
.collect(HashMap::new, (m, v) -> m.put(key.apply(v), value.apply(v)), HashMap::putAll);
|
||||
@ -122,7 +122,7 @@ public class CollStreamUtil {
|
||||
*/
|
||||
public static <E, K> Map<K, List<E>> groupByKey(Collection<E> collection, Function<E, K> key, boolean isParallel) {
|
||||
if (CollUtil.isEmpty(collection)) {
|
||||
return Collections.emptyMap();
|
||||
return MapUtil.newHashMap(0);
|
||||
}
|
||||
return groupBy(collection, key, Collectors.toList(), isParallel);
|
||||
}
|
||||
@ -160,7 +160,7 @@ public class CollStreamUtil {
|
||||
public static <E, K, U> Map<K, Map<U, List<E>>> groupBy2Key(Collection<E> collection, Function<E, K> key1,
|
||||
Function<E, U> key2, boolean isParallel) {
|
||||
if (CollUtil.isEmpty(collection)) {
|
||||
return Collections.emptyMap();
|
||||
return MapUtil.newHashMap(0);
|
||||
}
|
||||
return groupBy(collection, key1, CollectorUtil.groupingBy(key2, Collectors.toList()), isParallel);
|
||||
}
|
||||
@ -197,7 +197,7 @@ public class CollStreamUtil {
|
||||
public static <E, T, U> Map<T, Map<U, E>> group2Map(Collection<E> collection,
|
||||
Function<E, T> key1, Function<E, U> key2, boolean isParallel) {
|
||||
if (CollUtil.isEmpty(collection) || key1 == null || key2 == null) {
|
||||
return Collections.emptyMap();
|
||||
return MapUtil.newHashMap(0);
|
||||
}
|
||||
return groupBy(collection, key1, CollectorUtil.toMap(key2, Function.identity(), (l, r) -> l), isParallel);
|
||||
}
|
||||
@ -235,7 +235,7 @@ public class CollStreamUtil {
|
||||
public static <E, K, V> Map<K, List<V>> groupKeyValue(Collection<E> collection, Function<E, K> key,
|
||||
Function<E, V> value, boolean isParallel) {
|
||||
if (CollUtil.isEmpty(collection)) {
|
||||
return Collections.emptyMap();
|
||||
return MapUtil.newHashMap(0);
|
||||
}
|
||||
return groupBy(collection, key, Collectors.mapping(v -> Opt.ofNullable(v).map(value).orElse(null), Collectors.toList()), isParallel);
|
||||
}
|
||||
@ -254,7 +254,7 @@ public class CollStreamUtil {
|
||||
*/
|
||||
public static <E, K, D> Map<K, D> groupBy(Collection<E> collection, Function<E, K> key, Collector<E, ?, D> downstream) {
|
||||
if (CollUtil.isEmpty(collection)) {
|
||||
return Collections.emptyMap();
|
||||
return MapUtil.newHashMap(0);
|
||||
}
|
||||
return groupBy(collection, key, downstream, false);
|
||||
}
|
||||
@ -275,7 +275,7 @@ public class CollStreamUtil {
|
||||
*/
|
||||
public static <E, K, D> Map<K, D> groupBy(Collection<E> collection, Function<E, K> key, Collector<E, ?, D> downstream, boolean isParallel) {
|
||||
if (CollUtil.isEmpty(collection)) {
|
||||
return Collections.emptyMap();
|
||||
return MapUtil.newHashMap(0);
|
||||
}
|
||||
return StreamUtil.of(collection, isParallel).collect(CollectorUtil.groupingBy(key, downstream));
|
||||
}
|
||||
@ -307,7 +307,7 @@ public class CollStreamUtil {
|
||||
*/
|
||||
public static <E, T> List<T> toList(Collection<E> collection, Function<E, T> function, boolean isParallel) {
|
||||
if (CollUtil.isEmpty(collection)) {
|
||||
return Collections.emptyList();
|
||||
return CollUtil.newArrayList();
|
||||
}
|
||||
return StreamUtil.of(collection, isParallel)
|
||||
.map(function)
|
||||
@ -342,7 +342,7 @@ public class CollStreamUtil {
|
||||
*/
|
||||
public static <E, T> Set<T> toSet(Collection<E> collection, Function<E, T> function, boolean isParallel) {
|
||||
if (CollUtil.isEmpty(collection)) {
|
||||
return Collections.emptySet();
|
||||
return CollUtil.newHashSet();
|
||||
}
|
||||
return StreamUtil.of(collection, isParallel)
|
||||
.map(function)
|
||||
@ -365,11 +365,11 @@ public class CollStreamUtil {
|
||||
*/
|
||||
public static <K, X, Y, V> Map<K, V> merge(Map<K, X> map1, Map<K, Y> map2, BiFunction<X, Y, V> merge) {
|
||||
if (MapUtil.isEmpty(map1) && MapUtil.isEmpty(map2)) {
|
||||
return Collections.emptyMap();
|
||||
return MapUtil.newHashMap(0);
|
||||
} else if (MapUtil.isEmpty(map1)) {
|
||||
map1 = Collections.emptyMap();
|
||||
map1 = MapUtil.newHashMap(0);
|
||||
} else if (MapUtil.isEmpty(map2)) {
|
||||
map2 = Collections.emptyMap();
|
||||
map2 = MapUtil.newHashMap(0);
|
||||
}
|
||||
Set<K> key = new HashSet<>();
|
||||
key.addAll(map1.keySet());
|
||||
@ -385,4 +385,5 @@ public class CollStreamUtil {
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user