定义了两个HashSet变量,用addall()函数把两个变量元素整合到一次,但是发现有重复的,可是Set不是不可重复吗?其中的元素是一个我自己设的类,我在类中已经重写了equals函数跟Hash...
定义了两个HashSet变量,用addall()函数把两个变量元素整合到一次,但是发现有重复的,可是Set不是不可重复吗?其中的元素是一个我自己设的类,我在类中已经重写了equals函数跟Hashcode函数了,怎么还有重复呢?我的积分不高,请大家帮忙看看谢谢!我的代码如下:
public static void main(String arg[]) {
Collection a = new TreeSet();
Collection b = new HashSet();
a.add(new Name("a","1"));
a.add(new Name("b","2"));
a.add(new Name("c","3"));
b.add(new Name("a","1"));
b.add(new Name("b","2"));
b.add(new Name("d","4"));
Collection c = new HashSet(a);
Collection d = new HashSet(b);
c.addAll(b);
d.retainAll(a);
System.out.println(c);
System.out.println(d);
//Name这类的定义如下:
this.Firstname = firstname;
this.Lastname = lastname;
}
public String toString() {
return (Firstname + "" + Lastname);
}
public boolean equals(Name name) {
boolean a = Firstname.equals (name.Firstname);
boolean b =Lastname.equals(name.Lastname);
return a&&b;
}
public int hashCode () {
return Firstname.hashCode();
}
public int compareTo (Name n) {
int a = Firstname.compareTo(n.Firstname);
return a!=0? a:(Lastname.compareTo(n.Lastname));
}
}
展开