==到目前为止,我一直在我的程序中使用运算符来比较我的所有字符串.但是,我遇到了一个错误,将其中一个更改为了.equals(),并修复了该错误.
是==坏?什么时候应该不应该使用它?有什么不同?
我试图在论坛中回答这个问题而且我发现尽管equals在Employee课堂上覆盖了这个方法,但我仍然可以添加重复的元素TreeSet.
TreeSet.add(E)方法的Javadoc 说
如果指定的元素尚不存在,则将其添加到此集合中.更正式地,如果集合不包含元素e2,则将指定的元素e添加到该集合中(e == null?e2 == null:e.equals(e2)).如果此set已包含该元素,则调用将保持set不变并返回false.
这实质上意味着不会插入2个等于对象,TreeSet并且仅通过equals()包含对象的方法来确定相等性.
但是,下面的代码正在添加2个元素,Set即使它们是相等的
public class Employee implements Comparable<Employee> {
String employeeName;
int employeeId;
public Employee(String name, int id) {
this.employeeName = name;
this.employeeId = id;
}
public int compareTo(Employee emp) {
//return this.employeeName.compareTo(emp.employeeName);
return (this.employeeId - emp.employeeId);
}
@Override
public String toString() {
return ("Name is: " + employeeName + " Emp id is: " + employeeId);
} …Run Code Online (Sandbox Code Playgroud)