用于 Java 中集合操作的 API?[已关闭]
是否有用于集合操作的API,例如联合,交集,差分,笛卡尔积,从集合到另一个集合的函数,这些函数的域限制和范围限制,....在爪哇?
请评论(业务)的覆盖范围和绩效。
谢谢
是否有用于集合操作的API,例如联合,交集,差分,笛卡尔积,从集合到另一个集合的函数,这些函数的域限制和范围限制,....在爪哇?
请评论(业务)的覆盖范围和绩效。
谢谢
是的,java类。Set
通过 Java SE 教程:
s1.containsAll(s2)
— 如果 s2 是 s1 的子集,则返回 true。(如果集合 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
我不知道任何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);
}