java 怎么判断两个 Set 里的对象的值是否相同13
发布网友
发布时间:2023-10-17 22:13
我来回答
共4个回答
热心网友
时间:2024-12-02 15:00
不需要重写equals()
你还可以这样做 首先判断两个set.size()是否相等,如不等就说明里面的对象肯定不相同
若等则把其中一个set的对象加入到另一个set中去,再判断加入后的set和原先的set.size()是否相同,如不同则说明两个set里对象不同
flyingFish211 方法不可以,因为set并不保证顺序。
重写equals()示例:
public boolean equals(Object obj){
return this.toString().equals(obj.toString());//这里以两个对象的toString()来作为判断的标准,你可以在这里直接return 一个boolean变量
}
热心网友
时间:2024-12-02 15:00
用这个方法就可以了。
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;
}
热心网友
时间:2024-12-02 15:01
举个简单的例子给你:
比如String这个类,你可以创建两个对象
String str1=new String(“123”);
String str2=“123”;
以上是两种不同的方法构建了str1和str2 如果你要比较它们的对象值(都是123)就要这样写
Sytem.out.println(str1.equals(str2)); 结果输出 true 则说明对象值相等
热心网友
时间:2024-12-02 15:01
把两个set里面的值挨个拿出来比较 完全一样就相同 否则不同追问高手能帮我重写个 equals 方法吗 ? 谢谢了