我正在尝试在ArrayList中使用contains方法,我在其中存储了类型Employee的对象。但是当我使用这个方法时,即使我在Employee类
中实现了equals方法,它总是返回false这是我试过的:
员工类:
public class Employee {
.
.
.
@Override
public boolean equals(Object o){
if(o instanceof Employee)
{
Employee e = (Employee) o;
return this.id==(e.id);
}
return false;
}
@Override
public int hashCode() {
int hash = 7;
hash = 79 * hash + (int) (this.id ^ (this.id >>> 32));
return hash;
}
测试类:
public class Test {
LinkedList <Employee>list=new LinkedList <Employee>();
Employee e=new Employee();
long id=0;
e.setId(20710456);
list.add(e);
e.setId(30560432);
list.add(e);
public void Edit()
{
id=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter the id of the
employee"));
e.setId(id);
System.out.print(list.contains(e.getId()));
if(list.contains(e.getId())){
.
.
//rest of the code
}
}
}
答案 0 :(得分:7)
您正在呼叫list.contains(e.getId())
,但该列表不包含ID号 - 它包含Employee
个。我怀疑你的意思是list.contains(e)
。
答案 1 :(得分:0)
你应该调用list.contains(e)。该列表包含员工而非员工ID。
答案 2 :(得分:0)
只需在列表中循环即可进行比较
e.g:
for (Employee em: list){
if(em.getId()=e.getId()){
//your logic
}
}