Class CollectionStream

java.lang.Object
org.miaixz.bus.core.center.CollectionStream
Direct Known Subclasses:
CollKit

public class CollectionStream extends Object
集合的stream操作封装
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static <E, T, U> Map<T,Map<U,E>>
    group2Map(Collection<E> collection, Function<E,T> key1, Function<E,U> key2)
    将collection按照两个规则(比如有相同的年级id,班级id)分组成双层map Collection<E> ---> Map<T,Map<U,E>>
    static <E, T, U> Map<T,Map<U,E>>
    group2Map(Collection<E> collection, Function<E,T> key1, Function<E,U> key2, boolean isParallel)
    将collection按照两个规则(比如有相同的年级id,班级id)分组成双层map Collection<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的公共方法,更接近于原生,灵活性更强
    static <E, K, U> Map<K,Map<U,List<E>>>
    groupBy2Key(Collection<E> collection, Function<E,K> key1, Function<E,U> key2)
    将collection按照两个规则(比如有相同的年级id,班级id)分组成双层map Collection<E> ---> Map<T,Map<U,List<E>>>
    static <E, K, U> Map<K,Map<U,List<E>>>
    groupBy2Key(Collection<E> collection, Function<E,K> key1, Function<E,U> key2, boolean isParallel)
    将collection按照两个规则(比如有相同的年级id,班级id)分组成双层map Collection<E> ---> Map<T,Map<U,List<E>>>
    static <E, K> Map<K,List<E>>
    groupByKey(Collection<E> collection, Function<E,K> key)
    将collection按照规则(比如有相同的班级id)分组成map Collection<E> -------> Map<K,List<E>>
    static <E, K> Map<K,List<E>>
    groupByKey(Collection<E> collection, Function<E,K> key, boolean isParallel)
    将collection按照规则(比如有相同的班级id)分组成map Collection<E> -------> Map<K,List<E>>
    static <E, K, V> Map<K,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>>
    static <E, K, V> 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类型的map
    static <V, K> Map<K,V>
    toIdentityMap(Collection<V> collection, Function<V,K> key)
    将collection转化为类型不变的map Collection<V> ----> Map<K,V>
    static <V, K> Map<K,V>
    toIdentityMap(Collection<V> collection, Function<V,K> key, boolean isParallel)
    将collection转化为类型不变的map Collection<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 java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • CollectionStream

      public CollectionStream()
  • Method Details

    • toIdentityMap

      public static <V, K> Map<K,V> toIdentityMap(Collection<V> collection, Function<V,K> key)
      将collection转化为类型不变的map Collection<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转化为类型不变的map Collection<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, 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>
      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, V> Map<K,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

      public static <E, K> Map<K,List<E>> groupByKey(Collection<E> collection, Function<E,K> key)
      将collection按照规则(比如有相同的班级id)分组成map Collection<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)分组成map Collection<E> -------> Map<K,List<E>>
      Type Parameters:
      E - collection中的泛型
      K - map中的key类型
      Parameters:
      collection - 需要分组的集合
      key - 键分组的规则
      isParallel - 是否并行流
      Returns:
      分组后的map
    • groupBy2Key

      public static <E, K, U> Map<K,Map<U,List<E>>> groupBy2Key(Collection<E> collection, Function<E,K> key1, Function<E,U> key2)
      将collection按照两个规则(比如有相同的年级id,班级id)分组成双层map Collection<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, U> Map<K,Map<U,List<E>>> groupBy2Key(Collection<E> collection, Function<E,K> key1, Function<E,U> key2, boolean isParallel)
      将collection按照两个规则(比如有相同的年级id,班级id)分组成双层map Collection<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, U> Map<T,Map<U,E>> group2Map(Collection<E> collection, Function<E,T> key1, Function<E,U> key2)
      将collection按照两个规则(比如有相同的年级id,班级id)分组成双层map Collection<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, U> Map<T,Map<U,E>> group2Map(Collection<E> collection, Function<E,T> key1, Function<E,U> key2, boolean isParallel)
      将collection按照两个规则(比如有相同的年级id,班级id)分组成双层map Collection<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, V> Map<K,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, V> 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>>
      Type Parameters:
      E - collection中的泛型
      K - map中的key类型
      V - List中的value类型
      Parameters:
      collection - 需要分组的集合
      key - 键分组的规则
      value - 值分组的规则
      isParallel - 是否并行流
      Returns:
      分组后的map
    • groupBy

      public static <E, K, D> Map<K,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 - 第一次分组时需要的key
      downstream - 分组后需要进行的操作
      Returns:
      分组后的map
    • groupBy

      public static <E, K, D> Map<K,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 - 第一次分组时需要的key
      downstream - 分组后需要进行的操作
      isParallel - 是否并行流
      Returns:
      分组后的map
      See Also:
    • toList

      public static <E, T> List<T> toList(Collection<E> collection, Function<E,T> function)
      将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

      public static <E, T> Set<T> toSet(Collection<E> collection, Function<E,T> function)
      将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

      public static <K, X, Y, V> Map<K,V> merge(Map<K,X> map1, Map<K,Y> map2, BiFunction<X,Y,V> merge)
      合并两个相同key类型的map
      Type Parameters:
      K - map中的key类型
      X - 第一个 map的value类型
      Y - 第二个 map的value类型
      V - 最终map的value类型
      Parameters:
      map1 - 第一个需要合并的 map
      map2 - 第二个需要合并的 map
      merge - 合并的lambda,将key value1 value2合并成最终的类型,注意value可能为空的情况
      Returns:
      合并后的map