刚刚看到Set的equals方法,从Collection到Set,没有多了什么别的方法,不过多了些限制,比如Set的中的元素不能重复(不会有e1和e2都属于一个Set,且e1.equals(e2)这种情况),然后就是在equals方法上的限制,两个Set equals当且仅当它们有着相同的elements(就是对于任意set1中的e1,在set2中一定存在一个e2,e1.equals(e2)返回true,同时对于Set2中的任意一个e2,Set1中存在e1,e2.equals(e1)返回true,这里我不考虑有些Set允许加入null那种情况),一个例子如下:
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.TreeSet;
public class Test {
public static void main(String[] args) {
String[] sa = {"abc", "spam", "ham", "egg", "dog"};
Collection<String> cs = Arrays.asList(sa);
HashSet<String> set1 = new HashSet<String>(cs);
TreeSet<String> set2 = new TreeSet<String>(cs);
LinkedHashSet<String> set3 = new LinkedHashSet<String>(cs);
System.out.println(set1.equals(set2));
System.out.println(set1.equals(set3));
//set1.add(null);
//set2.add(null);
//set3.add(null);
System.out.println(set2.equals(set3));
}
}
有些Set允许至多有一个null(例如HashSet和LinkedHashSet),有些不允许有null(例如TreeSet),这里就不考虑了。(有null和没有null是不一样的)