本文详细介绍深入理解Collections API
让我们重新看看上述例子中的FindDups 。 假设你要知道在参数列表中哪个词汇仅出现了一次,哪个词汇出现的次数多于一次,但是你不希望将重复词汇重复地打印。你可以通过生成两个sets来实现, 一个包含参数列表中的每一个词汇,另一个仅包含重复词汇,仅出现一次的词汇即两个sets的差集, 我们已经了解了差集的计算方法。
import java.util.*;
public class FindDups2 {
public static void main(String args[]) {
Set uniques = new HashSet();
Set dups = new HashSet();
for (int i=0; i$#@60; args.length; i++)
if (!uniques.add(args[i]))
dups.add(args[i]);
uniques.removeAll(dups); // Destructive set-difference
System.out.println("Unique words: " + uniques);
System.out.println("Duplicate words: " + dups);
}
}现在,让我们运行用我们以前使用过的相同的参数列表修改的程序:
% java FindDups2 i came i saw i left
Unique words: [came, left, saw]
Duplicate words: [i]一个较少使用的 集合代数操作是对称差集:它的元素包含在两个特定sets的某一个当中, 但不是在两个之中都包含。下列代码非破坏性地计算了对称差集:
Set symmetricDiff = new HashSet(s1);
symmetricDiff.addAll(s2);
Set tmp = new HashSet(s1);
tmp.retainAll(s2);
symmetricDiff.removeAll(tmp);数组操作
数组操作在Sets方面所做的事情与在其它Collection上所做的事情基本相同。有关描述见Collection接口lesson。
什么是Collection?
责编:豆豆技术应用
正在加载评论...