不需要重写equals()
你还可以这样做
首先判断两个set.size()是否相等,如不等就说明里面的对象肯定不相同
若等则把其中一个set的对象加入到另一个set中去,再判断加入后的set和原先的set.size()是否相同,如不同则说明两个set里对象不同
flyingFish211
方法不可以,因为set并不保证顺序
举个简单的例子给你:
比如String这个类,你可以创建两个对象
String
str1=new
String(“123”);
String
str2=“123”;
以上是两种不同的方法构建了str1和str2
如果你要比较它们的对象值(都是123)就要这样写
Sytem.out.println(str1.equals(str2));
结果输出
true
则说明对象值相等
用这个方法就可以了。
public
boolean
isSetEqual(Set
set1,
Set
set2){
if(set1.size()
!=
set2.size()){
return
false;
}
Iterator
ite1
=
set1.iterator();
Iterator
ite2
=
set2.iterator();
while(ite1.hasNext()){
if(ite1.next()
!=
ite2.next()){
return
false;
}
}
return
true;
}
回答楼下的,Set得实例一般都用TreeSet,而TreeSet是排序的。因此如果是同种类型比较,这个肯定是可以的。如果是不同类型比较,那么肯定为false,
有什么不可的呢?
不过我都同意,这样比较是不稳妥地,修改如下:
public
boolean
isSetEqual(Set
set1,
Set
set2){
if(set1.size()
!=
set2.size()){
return
false;
}
Iterator
ite1
=
set1.iterator();
Iterator
ite2
=
set2.iterator();
boolean
isFullEqual
=
true;
while(ite1.hasNext()){
if(!set2.contains(ite2.next())){
isFullEqual
=
false;
}
}
return
isFullEqual;
}
把两个set里面的值挨个拿出来比较
完全一样就相同
否则不同