【发布时间】:2018-11-26 21:19:33
【问题描述】:
import java.util.*;
class emp{
String city;
String name;
emp(String a, String b)
{
city=a;
name=b;
}
}
public class HelloWorld{
public static void main(String []args){
Set<emp> s = new HashSet<emp>();
emp s1=new emp("bangalore","mukesh");
emp s2= new emp("bangalore","mukesh");
s.add(s1);
s.add(s2);
System.out.println(s1.equals(s2));
System.out.println("finsih");
System.out.println(s);
}
}
我正在创建两个相同的对象,但它们被输入到集合中,为什么 s1.equals(s2) 返回 false?
【问题讨论】:
-
如果你想让这两个对象相等,你需要重写对象类的equals函数来编写你自己的equals函数。
-
如果您的意图是该集合只有一个
emp对象(因为您认为它们相等),那么您需要同时实现equals()和hashCode()。见Understanding the workings of equals and hashCode in a HashMap。 -
仅供参考: Java 命名约定是类名以大写字母开头,即
Emp。此外,将参数命名为a和b对调用该方法的人没有多大帮助。
标签: java collections