用于Java中的集合操作的API?

Tas*_*han 15 java api set

是否存在用于集合操作的API,例如Union,交集,差异,笛卡尔积,从集合到另一个集合的函数,域限制和这些函数的范围限制,....在Java中?

请评论(运营)和业绩的覆盖范围.

谢谢

igo*_*rdc 23

是的,java Set类.

通过Java SE教程:

s1.containsAll(s2) - 如果s2是s1的子集,则返回true.(如果set s1包含s2中的所有元素,则s2是s1的子集.)

s1.addAll(s2) - 将s1转换为s1和s2的并集.(两个集合的并集是包含任一集合中包含的所有元素的集合.)

s1.retainAll(s2) - 将s1转换为s1和s2的交集.(两个集合的交集是仅包含两个集合共有的元素的集合.)

s1.removeAll(s2) - 将s1转换为s1和s2的(非对称)集合差异.(例如,s1减去s2的设定差异是包含在s1中找到但在s2中找不到的所有元素的集合.)

http://download.oracle.com/javase/tutorial/collections/interfaces/set.html


Har*_*Joy 13

我不知道任何API,但使用以下方法在Set上执行此类操作.

public static <T> Set<T> union(Set<T> setA, Set<T> setB) {
    Set<T> tmp = new TreeSet<T>(setA);
    tmp.addAll(setB);
    return tmp;
  }

  public static <T> Set<T> intersection(Set<T> setA, Set<T> setB) {
    Set<T> tmp = new TreeSet<T>();
    for (T x : setA)
      if (setB.contains(x))
        tmp.add(x);
    return tmp;
  }

  public static <T> Set<T> difference(Set<T> setA, Set<T> setB) {
    Set<T> tmp = new TreeSet<T>(setA);
    tmp.removeAll(setB);
    return tmp;
  }

  public static <T> Set<T> symDifference(Set<T> setA, Set<T> setB) {
    Set<T> tmpA;
    Set<T> tmpB;

    tmpA = union(setA, setB);
    tmpB = intersection(setA, setB);
    return difference(tmpA, tmpB);
  }

  public static <T> boolean isSubset(Set<T> setA, Set<T> setB) {
    return setB.containsAll(setA);
  }

  public static <T> boolean isSuperset(Set<T> setA, Set<T> setB) {
    return setA.containsAll(setB);
  }
Run Code Online (Sandbox Code Playgroud)

参考:设置操作:并集,交集,差异,对称差异,是子集,是超集