Package org.miaixz.bus.core.center
Class CollectionStream
java.lang.Object
org.miaixz.bus.core.center.CollectionValidator
org.miaixz.bus.core.center.CollectionStream
- Direct Known Subclasses:
CollKit
集合的stream操作封装
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongroup2Map(Collection<E> collection, Function<E, T> key1, Function<E, U> key2) 将collection按照两个规则(比如有相同的年级id,班级id)分组成双层mapCollection<E> ---> Map<T,Map<U,E>>group2Map(Collection<E> collection, Function<E, T> key1, Function<E, U> key2, boolean isParallel) 将collection按照两个规则(比如有相同的年级id,班级id)分组成双层mapCollection<E> ---> Map<T,Map<U,E>>static <E,K, D> Map <K, D> groupBy(Collection<E> collection, Function<E, K> key, Collector<E, ?, D> downstream) 作为所有groupingBy的公共方法,更接近于原生,灵活性更强static <E,K, D> Map <K, D> groupBy(Collection<E> collection, Function<E, K> key, Collector<E, ?, D> downstream, boolean isParallel) 作为所有groupingBy的公共方法,更接近于原生,灵活性更强groupBy2Key(Collection<E> collection, Function<E, K> key1, Function<E, U> key2) 将collection按照两个规则(比如有相同的年级id,班级id)分组成双层mapCollection<E> ---> Map<T,Map<U,List<E>>>groupBy2Key(Collection<E> collection, Function<E, K> key1, Function<E, U> key2, boolean isParallel) 将collection按照两个规则(比如有相同的年级id,班级id)分组成双层mapCollection<E> ---> Map<T,Map<U,List<E>>>groupByKey(Collection<E> collection, Function<E, K> key) 将collection按照规则(比如有相同的班级id)分组成mapCollection<E> -------> Map<K,List<E>>groupByKey(Collection<E> collection, Function<E, K> key, boolean isParallel) 将collection按照规则(比如有相同的班级id)分组成mapCollection<E> -------> Map<K,List<E>>groupKeyValue(Collection<E> collection, Function<E, K> key, Function<E, V> value) 将collection按照规则(比如有相同的班级id)分组成map,map中的key为班级id,value为班级名Collection<E> -------> Map<K,List<V>>groupKeyValue(Collection<E> collection, Function<E, K> key, Function<E, V> value, boolean isParallel) 将collection按照规则(比如有相同的班级id)分组成map,map中的key为班级id,value为班级名Collection<E> -------> Map<K,List<V>>static <K,X, Y, V>
Map<K, V> merge(Map<K, X> map1, Map<K, Y> map2, BiFunction<X, Y, V> merge) 合并两个相同key类型的mapstatic <V,K> Map <K, V> toIdentityMap(Collection<V> collection, Function<V, K> key) 将collection转化为类型不变的mapCollection<V> ----> Map<K,V>static <V,K> Map <K, V> toIdentityMap(Collection<V> collection, Function<V, K> key, boolean isParallel) 将collection转化为类型不变的mapCollection<V> ----> Map<K,V>static <E,T> List <T> toList(Collection<E> collection, Function<E, T> function) 将collection转化为List集合,但是两者的泛型不同Collection<E> ------> List<T>static <E,T> List <T> toList(Collection<E> collection, Function<E, T> function, boolean isParallel) 将collection转化为List集合,但是两者的泛型不同Collection<E> ------> List<T>static <E,K, V> Map <K, V> toMap(Collection<E> collection, Function<E, K> key, Function<E, V> value) 将Collection转化为map(value类型与collection的泛型不同)Collection<E> -----> Map<K,V>static <E,K, V> Map <K, V> toMap(Collection<E> collection, Function<E, K> key, Function<E, V> value, boolean isParallel) static <E,T> Set <T> toSet(Collection<E> collection, Function<E, T> function) 将collection转化为Set集合,但是两者的泛型不同Collection<E> ------> Set<T>static <E,T> Set <T> toSet(Collection<E> collection, Function<E, T> function, boolean isParallel) 将collection转化为Set集合,但是两者的泛型不同Collection<E> ------> Set<T>Methods inherited from class org.miaixz.bus.core.center.CollectionValidator
defaultIfEmpty, defaultIfEmpty, emptyIfNull, emptyIfNull, equals, hasNull, isEmpty, isEmpty, isEmpty, isEmpty, isEmpty, isEqualList, isNotEmpty, isNotEmpty, isNotEmpty, isNotEmpty, isNotEmpty, isSub, size
-
Constructor Details
-
CollectionStream
public CollectionStream()
-
-
Method Details
-
toIdentityMap
将collection转化为类型不变的mapCollection<V> ----> Map<K,V>- Type Parameters:
V- collection中的泛型K- map中的key类型- Parameters:
collection- 需要转化的集合key- V类型转化为K类型的lambda方法- Returns:
- 转化后的map
-
toIdentityMap
public static <V,K> Map<K,V> toIdentityMap(Collection<V> collection, Function<V, K> key, boolean isParallel) 将collection转化为类型不变的mapCollection<V> ----> Map<K,V>- Type Parameters:
V- collection中的泛型K- map中的key类型- Parameters:
collection- 需要转化的集合key- V类型转化为K类型的lambda方法isParallel- 是否并行流- Returns:
- 转化后的map
-
toMap
public static <E,K, Map<K,V> V> toMap(Collection<E> collection, Function<E, K> key, Function<E, V> value) 将Collection转化为map(value类型与collection的泛型不同)Collection<E> -----> Map<K,V>- Type Parameters:
E- collection中的泛型K- map中的key类型V- map中的value类型- Parameters:
collection- 需要转化的集合key- E类型转化为K类型的lambda方法value- E类型转化为V类型的lambda方法- Returns:
- 转化后的map
-
toMap
public static <E,K, Map<K,V> V> toMap(Collection<E> collection, Function<E, K> key, Function<E, V> value, boolean isParallel) - Type Parameters:
E- collection中的泛型K- map中的key类型V- map中的value类型- Parameters:
collection- 需要转化的集合key- E类型转化为K类型的lambda方法value- E类型转化为V类型的lambda方法isParallel- 是否并行流- Returns:
- 转化后的map
-
groupByKey
将collection按照规则(比如有相同的班级id)分组成mapCollection<E> -------> Map<K,List<E>>- Type Parameters:
E- collection中的泛型K- map中的key类型- Parameters:
collection- 需要分组的集合key- 分组的规则- Returns:
- 分组后的map
-
groupByKey
public static <E,K> Map<K,List<E>> groupByKey(Collection<E> collection, Function<E, K> key, boolean isParallel) 将collection按照规则(比如有相同的班级id)分组成mapCollection<E> -------> Map<K,List<E>>- Type Parameters:
E- collection中的泛型K- map中的key类型- Parameters:
collection- 需要分组的集合key- 键分组的规则isParallel- 是否并行流- Returns:
- 分组后的map
-
groupBy2Key
public static <E,K, Map<K,U> Map<U, groupBy2KeyList<E>>> (Collection<E> collection, Function<E, K> key1, Function<E, U> key2) 将collection按照两个规则(比如有相同的年级id,班级id)分组成双层mapCollection<E> ---> Map<T,Map<U,List<E>>>- Type Parameters:
E- 集合元素类型K- 第一个map中的key类型U- 第二个map中的key类型- Parameters:
collection- 需要分组的集合key1- 第一个分组的规则key2- 第二个分组的规则- Returns:
- 分组后的map
-
groupBy2Key
public static <E,K, Map<K,U> Map<U, groupBy2KeyList<E>>> (Collection<E> collection, Function<E, K> key1, Function<E, U> key2, boolean isParallel) 将collection按照两个规则(比如有相同的年级id,班级id)分组成双层mapCollection<E> ---> Map<T,Map<U,List<E>>>- Type Parameters:
E- 集合元素类型K- 第一个map中的key类型U- 第二个map中的key类型- Parameters:
collection- 需要分组的集合key1- 第一个分组的规则key2- 第二个分组的规则isParallel- 是否并行流- Returns:
- 分组后的map
-
group2Map
public static <E,T, Map<T,U> Map<U, group2MapE>> (Collection<E> collection, Function<E, T> key1, Function<E, U> key2) 将collection按照两个规则(比如有相同的年级id,班级id)分组成双层mapCollection<E> ---> Map<T,Map<U,E>>- Type Parameters:
E- collection中的泛型T- 第一个map中的key类型U- 第二个map中的key类型- Parameters:
collection- 需要分组的集合key1- 第一个分组的规则key2- 第二个分组的规则- Returns:
- 分组后的map
-
group2Map
public static <E,T, Map<T,U> Map<U, group2MapE>> (Collection<E> collection, Function<E, T> key1, Function<E, U> key2, boolean isParallel) 将collection按照两个规则(比如有相同的年级id,班级id)分组成双层mapCollection<E> ---> Map<T,Map<U,E>>- Type Parameters:
E- collection中的泛型T- 第一个map中的key类型U- 第二个map中的key类型- Parameters:
collection- 需要分组的集合key1- 第一个分组的规则key2- 第二个分组的规则isParallel- 是否并行流- Returns:
- 分组后的map
-
groupKeyValue
public static <E,K, Map<K,V> List<V>> groupKeyValue(Collection<E> collection, Function<E, K> key, Function<E, V> value) 将collection按照规则(比如有相同的班级id)分组成map,map中的key为班级id,value为班级名Collection<E> -------> Map<K,List<V>>- Type Parameters:
E- collection中的泛型K- map中的key类型V- List中的value类型- Parameters:
collection- 需要分组的集合key- 键分组的规则value- 值分组的规则- Returns:
- 分组后的map
-
groupKeyValue
public static <E,K, Map<K,V> List<V>> groupKeyValue(Collection<E> collection, Function<E, K> key, Function<E, V> value, boolean isParallel) 将collection按照规则(比如有相同的班级id)分组成map,map中的key为班级id,value为班级名Collection<E> -------> Map<K,List<V>>- Type Parameters:
E- collection中的泛型K- map中的key类型V- List中的value类型- Parameters:
collection- 需要分组的集合key- 键分组的规则value- 值分组的规则isParallel- 是否并行流- Returns:
- 分组后的map
-
groupBy
public static <E,K, Map<K,D> D> groupBy(Collection<E> collection, Function<E, K> key, Collector<E, ?, D> downstream) 作为所有groupingBy的公共方法,更接近于原生,灵活性更强- Type Parameters:
E- collection中的泛型K- map中的key类型D- 后续操作的返回值- Parameters:
collection- 需要分组的集合key- 第一次分组时需要的keydownstream- 分组后需要进行的操作- Returns:
- 分组后的map
-
groupBy
public static <E,K, Map<K,D> D> groupBy(Collection<E> collection, Function<E, K> key, Collector<E, ?, D> downstream, boolean isParallel) 作为所有groupingBy的公共方法,更接近于原生,灵活性更强- Type Parameters:
E- collection中的泛型K- map中的key类型D- 后续操作的返回值- Parameters:
collection- 需要分组的集合key- 第一次分组时需要的keydownstream- 分组后需要进行的操作isParallel- 是否并行流- Returns:
- 分组后的map
- See Also:
-
toList
将collection转化为List集合,但是两者的泛型不同Collection<E> ------> List<T>- Type Parameters:
E- collection中的泛型T- List中的泛型- Parameters:
collection- 需要转化的集合function- collection中的泛型转化为list泛型的lambda表达式- Returns:
- 转化后的list
-
toList
public static <E,T> List<T> toList(Collection<E> collection, Function<E, T> function, boolean isParallel) 将collection转化为List集合,但是两者的泛型不同Collection<E> ------> List<T>- Type Parameters:
E- collection中的泛型T- List中的泛型- Parameters:
collection- 需要转化的集合function- collection中的泛型转化为list泛型的lambda表达式isParallel- 是否并行流- Returns:
- 转化后的list
-
toSet
将collection转化为Set集合,但是两者的泛型不同Collection<E> ------> Set<T>- Type Parameters:
E- collection中的泛型T- Set中的泛型- Parameters:
collection- 需要转化的集合function- collection中的泛型转化为set泛型的lambda表达式- Returns:
- 转化后的Set
-
toSet
public static <E,T> Set<T> toSet(Collection<E> collection, Function<E, T> function, boolean isParallel) 将collection转化为Set集合,但是两者的泛型不同Collection<E> ------> Set<T>- Type Parameters:
E- collection中的泛型T- Set中的泛型- Parameters:
collection- 需要转化的集合function- collection中的泛型转化为set泛型的lambda表达式isParallel- 是否并行流- Returns:
- 转化后的Set
-
merge
合并两个相同key类型的map- Type Parameters:
K- map中的key类型X- 第一个 map的value类型Y- 第二个 map的value类型V- 最终map的value类型- Parameters:
map1- 第一个需要合并的 mapmap2- 第二个需要合并的 mapmerge- 合并的lambda,将key value1 value2合并成最终的类型,注意value可能为空的情况- Returns:
- 合并后的map
-