Class CollectorKit

java.lang.Object
org.miaixz.bus.core.xyz.CollectorKit

public class CollectorKit extends Object
可变的汇聚操作Collector 相关工具封装
Since:
Java 17+
Author:
Kimi Liu
  • Field Details

  • Constructor Details

    • CollectorKit

      public CollectorKit()
  • Method Details

    • joining

      public static <T> Collector<T,?,String> joining(CharSequence delimiter)
      提供任意对象的Join操作的Collector实现,对象默认调用toString方法
      Type Parameters:
      T - 对象类型
      Parameters:
      delimiter - 分隔符
      Returns:
      Collector
    • joining

      public static <T> Collector<T,?,String> joining(CharSequence delimiter, Function<T,? extends CharSequence> toStringFunc)
      提供任意对象的Join操作的Collector实现
      Type Parameters:
      T - 对象类型
      Parameters:
      delimiter - 分隔符
      toStringFunc - 自定义指定对象转换为字符串的方法
      Returns:
      Collector
    • joining

      public static <T> Collector<T,?,String> joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix, Function<T,? extends CharSequence> toStringFunc)
      提供任意对象的Join操作的Collector实现
      Type Parameters:
      T - 对象类型
      Parameters:
      delimiter - 分隔符
      prefix - 前缀
      suffix - 后缀
      toStringFunc - 自定义指定对象转换为字符串的方法
      Returns:
      Collector
    • groupingBy

      public static <T, K, D, A, M extends Map<K, D>> Collector<T,?,M> groupingBy(Function<? super T,? extends K> classifier, Supplier<M> mapFactory, Collector<? super T,A,D> downstream)
      提供对null值友好的groupingBy操作的Collector实现,可指定map类型
      Type Parameters:
      T - 实体类型
      K - 实体中的分组依据对应类型,也是Map中key的类型
      D - 下游操作对应返回类型,也是Map中value的类型
      A - 下游操作在进行中间操作时对应类型
      M - 最后返回结果Map类型
      Parameters:
      classifier - 分组依据
      mapFactory - 提供的map
      downstream - 下游操作
      Returns:
      Collector
    • groupingBy

      public static <T, K, A, D> Collector<T,?,Map<K,D>> groupingBy(Function<? super T,? extends K> classifier, Collector<? super T,A,D> downstream)
      提供对null值友好的groupingBy操作的Collector实现
      Type Parameters:
      T - 实体类型
      K - 实体中的分组依据对应类型,也是Map中key的类型
      A - 下游操作在进行中间操作时对应类型
      D - 下游操作对应返回类型,也是Map中value的类型
      Parameters:
      classifier - 分组依据
      downstream - 下游操作
      Returns:
      Collector
    • groupingBy

      public static <T, K> Collector<T,?,Map<K,List<T>>> groupingBy(Function<? super T,? extends K> classifier)
      提供对null值友好的groupingBy操作的Collector实现
      Type Parameters:
      T - 实体类型
      K - 实体中的分组依据对应类型,也是Map中key的类型
      Parameters:
      classifier - 分组依据
      Returns:
      Collector
    • groupingBy

      public static <T, K, R, C extends Collection<R>, M extends Map<K, C>> Collector<T,?,M> groupingBy(Function<? super T,? extends K> classifier, Function<? super T,? extends R> valueMapper, Supplier<C> valueCollFactory, Supplier<M> mapFactory)
      提供对null值友好的groupingBy操作的Collector实现, 对集合分组,然后对分组后的值集合进行映射
      Type Parameters:
      T - 元素类型
      K - 键类型
      R - 值类型
      C - 值集合类型
      M - 返回的Map集合类型
      Parameters:
      classifier - 分组依据
      valueMapper - 值映射方法
      valueCollFactory - 值集合的工厂方法
      mapFactory - Map集合的工厂方法
      Returns:
      Collector
    • groupingBy

      public static <T, K, R, C extends Collection<R>> Collector<T,?,Map<K,C>> groupingBy(Function<? super T,? extends K> classifier, Function<? super T,? extends R> valueMapper, Supplier<C> valueCollFactory)
      提供对null值友好的groupingBy操作的Collector实现, 对集合分组,然后对分组后的值集合进行映射
      Type Parameters:
      T - 元素类型
      K - 键类型
      R - 值类型
      C - 值集合类型
      Parameters:
      classifier - 分组依据
      valueMapper - 值映射方法
      valueCollFactory - 值集合的工厂方法
      Returns:
      Collector
    • groupingBy

      public static <T, K, R> Collector<T,?,Map<K,List<R>>> groupingBy(Function<? super T,? extends K> classifier, Function<? super T,? extends R> valueMapper)
      提供对null值友好的groupingBy操作的Collector实现, 对集合分组,然后对分组后的值集合进行映射
      Type Parameters:
      T - 元素类型
      K - 键类型
      R - 值类型
      Parameters:
      classifier - 分组依据
      valueMapper - 值映射方法
      Returns:
      Collector
    • toMap

      public static <T, K, U> Collector<T,?,Map<K,U>> toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)
      对null友好的 toMap 操作的 Collector实现,默认使用HashMap
      Type Parameters:
      T - 实体类型
      K - map中key的类型
      U - map中value的类型
      Parameters:
      keyMapper - 指定map中的key
      valueMapper - 指定map中的value
      Returns:
      对null友好的 toMap 操作的 Collector实现
    • toMap

      public static <T, K> Collector<T,?,Map<K,T>> toMap(Function<? super T,? extends K> keyMapper)
      对null友好的 toMap 操作的 Collector实现,默认使用HashMap
      Type Parameters:
      T - 实体类型
      K - map中key的类型
      Parameters:
      keyMapper - 指定map中的key
      Returns:
      对null友好的 toMap 操作的 Collector实现
    • toMap

      public static <T, K, U> Collector<T,?,Map<K,U>> toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction)
      对null友好的 toMap 操作的 Collector实现,默认使用HashMap
      Type Parameters:
      T - 实体类型
      K - map中key的类型
      U - map中value的类型
      Parameters:
      keyMapper - 指定map中的key
      valueMapper - 指定map中的value
      mergeFunction - 合并前对value进行的操作
      Returns:
      对null友好的 toMap 操作的 Collector实现
    • toMap

      public static <T, K, U, M extends Map<K, U>> Collector<T,?,M> toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction, Supplier<M> mapSupplier)
      对null友好的 toMap 操作的 Collector实现
      Type Parameters:
      T - 实体类型
      K - map中key的类型
      U - map中value的类型
      M - map的类型
      Parameters:
      keyMapper - 指定map中的key
      valueMapper - 指定map中的value
      mergeFunction - 合并前对value进行的操作
      mapSupplier - 最终需要的map类型
      Returns:
      对null友好的 toMap 操作的 Collector实现
    • mapMerger

      public static <K, V, M extends Map<K, V>> BinaryOperator<M> mapMerger(BinaryOperator<V> mergeFunction)
      用户合并map的BinaryOperator,传入合并前需要对value进行的操作
      Type Parameters:
      K - key的类型
      V - value的类型
      M - map
      Parameters:
      mergeFunction - 合并前需要对value进行的操作
      Returns:
      用户合并map的BinaryOperator
    • reduceListMap

      public static <K, V> Collector<Map<K,V>,?,Map<K,List<V>>> reduceListMap()
      聚合这种数据类型:Collection<Map<K,V>> => Map<K,List<V>> 其中key相同的value,会累加到List中
      Type Parameters:
      K - key的类型
      V - value的类型
      Returns:
      聚合后的map
    • reduceListMap

      public static <K, V, R extends Map<K, List<V>>> Collector<Map<K,V>,?,R> reduceListMap(Supplier<R> mapSupplier)
      聚合这种数据类型:Collection<Map<K,V>> => Map<K,List<V>> 其中key相同的value,会累加到List中
      Type Parameters:
      K - key的类型
      V - value的类型
      R - 返回值的类型
      Parameters:
      mapSupplier - 可自定义map的类型如concurrentHashMap等
      Returns:
      聚合后的map
    • toEntryStream

      public static <T, K> Collector<T,List<T>,EntryStream<K,T>> toEntryStream(Function<? super T,? extends K> keyMapper)
      将流转为EntryStream
      Type Parameters:
      T - 输入元素类型
      K - 元素的键类型
      Parameters:
      keyMapper - 键的映射方法
      Returns:
      收集器
    • toEntryStream

      public static <T, K, V> Collector<T,List<T>,EntryStream<K,V>> toEntryStream(Function<? super T,? extends K> keyMapper, Function<? super T,? extends V> valueMapper)
      将流转为EntryStream
      Type Parameters:
      T - 输入元素类型
      K - 元素的键类型
      V - 元素的值类型
      Parameters:
      keyMapper - 键的映射方法
      valueMapper - 值的映射方法
      Returns:
      收集器
    • toEasyStream

      public static <T> Collector<T,?,EasyStream<T>> toEasyStream()
      将流转为EasyStream
      Type Parameters:
      T - 输入元素类型
      Returns:
      收集器
    • transform

      public static <T, R, C extends Collection<T>> Collector<T,C,R> transform(Supplier<C> collFactory, Function<C,R> mapper)
      收集元素,将其转为指定Collection集合后,再对该集合进行转换,并最终返回转换后的结果。 返回的收集器的效果等同于:
      
       Collection<T> coll = Stream.of(a, b, c, d).collect(Collectors.toColl(collFactory));
       R result = mapper.apply(coll);
       
      Type Parameters:
      T - 输入元素类型
      R - 返回值类型
      C - 中间收集输入元素的集合类型
      Parameters:
      collFactory - 中间收集输入元素的集合的创建方法
      mapper - 最终将元素集合映射为返回值的方法
      Returns:
      收集器
    • transform

      public static <T, R> Collector<T,List<T>,R> transform(Function<List<T>,R> mapper)
      收集元素,将其转为ArrayList集合后,再对该集合进行转换,并最终返回转换后的结果。 返回的收集器的效果等同于:
      
       List<T> coll = Stream.of(a, b, c, d).collect(Collectors.toList());
       R result = mapper.apply(coll);
       
      Type Parameters:
      T - 输入元素类型
      R - 返回值类型
      Parameters:
      mapper - 最终将元素集合映射为返回值的方法
      Returns:
      收集器
    • entryToMap

      public static <K, V> Collector<Map.Entry<K,V>,?,Map<K,V>> entryToMap()
      用于Stream<Entry> 转 Map 的情况
      Type Parameters:
      K - key类型
      V - value类型
      Returns:
      map
    • filtering

      public static <T, A, R> Collector<T,?,R> filtering(Predicate<? super T> predicate, Collector<? super T,A,R> downstream)
      过滤
      Type Parameters:
      T - 元素类型
      A - 中间类型
      R - 结束类型
      Parameters:
      predicate - 断言
      downstream - 下游操作
      Returns:
      一个用于过滤元素的 Collector