Class CollectionOperation<E>

java.lang.Object
org.miaixz.bus.core.center.CollectionOperation<E>
Type Parameters:
E - 元素类型

public class CollectionOperation<E> extends Object
集合运算,包括:
  • 求集合的并集
  • 求集合的唯一并集
  • 求集合的完全并集
  • 求集合的交集
  • 求集合的差集
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Summary

    Constructors
    Constructor
    Description
    CollectionOperation(Collection<? extends E>[] colls)
    构造
  • Method Summary

    Modifier and Type
    Method
    Description
    多个集合的差集 针对一个集合中存在多个相同元素的情况,计算每两个集合中此元素的个数,保留两个集合中此元素个数差的个数 例如:
    多个集合的交集 针对一个集合中存在多个相同元素的情况,计算两个集合中此元素的个数,保留最少的个数 例如:集合1:[a, b, c, c, c],集合2:[a, b, c, c] 结果:[a, b, c, c],此结果中只保留了两个c
    多个集合的唯一交集 针对一个集合中存在多个相同元素的情况,只保留一个 例如:集合1:[a, b, c, c, c],集合2:[a, b, c, c] 结果:[a, b, c],此结果中只保留了一个c
    static <E> CollectionOperation<E>
    of(Collection<? extends E>... colls)
    创建运算对象
    计算集合的单差集,即只返回【集合1】中有,但是【集合2】、【集合3】...中没有的元素,例如:
    多个集合的并集 针对一个集合中存在多个相同元素的情况,计算两个集合中此元素的个数,保留最多的个数 例如:集合1:[a, b, c, c, c],集合2:[a, b, c, c] 结果:[a, b, c, c, c],此结果中只保留了三个c
    多个集合的完全并集,类似于SQL中的“UNION ALL” 针对一个集合中存在多个相同元素的情况,保留全部元素 例如:集合1:[a, b, c, c, c],集合2:[a, b, c, c] 结果:[a, b, c, c, c, a, b, c, c]
    多个集合的非重复并集,类似于SQL中的“UNION DISTINCT” 针对一个集合中存在多个相同元素的情况,只保留一个 例如:集合1:[a, b, c, c, c],集合2:[a, b, c, c] 结果:[a, b, c],此结果中只保留了一个c

    Methods inherited from class java.lang.Object

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

    • CollectionOperation

      public CollectionOperation(Collection<? extends E>[] colls)
      构造
      Parameters:
      colls - 集合数组
  • Method Details

    • of

      @SafeVarargs public static <E> CollectionOperation<E> of(Collection<? extends E>... colls)
      创建运算对象
      Type Parameters:
      E - 元素类型
      Parameters:
      colls - 集合列表
      Returns:
      CollectionOperation
    • union

      public Collection<E> union()
      多个集合的并集 针对一个集合中存在多个相同元素的情况,计算两个集合中此元素的个数,保留最多的个数 例如:集合1:[a, b, c, c, c],集合2:[a, b, c, c] 结果:[a, b, c, c, c],此结果中只保留了三个c
      Returns:
      并集的集合,返回 ArrayList
    • unionDistinct

      public Set<E> unionDistinct()
      多个集合的非重复并集,类似于SQL中的“UNION DISTINCT” 针对一个集合中存在多个相同元素的情况,只保留一个 例如:集合1:[a, b, c, c, c],集合2:[a, b, c, c] 结果:[a, b, c],此结果中只保留了一个c
      Returns:
      并集的集合,返回 LinkedHashSet
    • unionAll

      public List<E> unionAll()
      多个集合的完全并集,类似于SQL中的“UNION ALL” 针对一个集合中存在多个相同元素的情况,保留全部元素 例如:集合1:[a, b, c, c, c],集合2:[a, b, c, c] 结果:[a, b, c, c, c, a, b, c, c]
      Returns:
      并集的集合,返回 ArrayList
    • intersection

      public Collection<E> intersection()
      多个集合的交集 针对一个集合中存在多个相同元素的情况,计算两个集合中此元素的个数,保留最少的个数 例如:集合1:[a, b, c, c, c],集合2:[a, b, c, c] 结果:[a, b, c, c],此结果中只保留了两个c
      Returns:
      交集的集合,返回 ArrayList
    • intersectionDistinct

      public Set<E> intersectionDistinct()
      多个集合的唯一交集 针对一个集合中存在多个相同元素的情况,只保留一个 例如:集合1:[a, b, c, c, c],集合2:[a, b, c, c] 结果:[a, b, c],此结果中只保留了一个c
      Returns:
      唯一交集的集合,返回 LinkedHashSet
    • disjunction

      public Collection<E> disjunction()
      多个集合的差集 针对一个集合中存在多个相同元素的情况,计算每两个集合中此元素的个数,保留两个集合中此元素个数差的个数 例如:
           disjunction([a, b, c, c, c], [a, b, c, c]) - [c]
           disjunction([a, b], [])                    - [a, b]
           disjunction([a, b, c], [b, c, d])          - [a, d]
       
      任意一个集合为空,返回另一个集合 两个集合无差集则返回空集合
      Returns:
      差集的集合,返回 ArrayList
    • subtract

      public List<E> subtract()
      计算集合的单差集,即只返回【集合1】中有,但是【集合2】、【集合3】...中没有的元素,例如:
           subtract([1,2,3,4],[2,3,4,5]) - [1]
       
      Returns:
      单差集的List