在ArrayList中使用contains方法

时间:2013-04-03 21:01:10

标签: java arraylist

我正在尝试在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

            }
    }
 }

3 个答案:

答案 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
  }
}