使用非静态方法搜索Java数组

使用非静态方法搜索Java数组,java,arrays,Java,Arrays,我有一个对象类型为Employee的数组: Employee[] employees = new Employee[100]; 每个员工都是 Employee(FirstName, LastName, MiddleInitial, Status, Gender, EN); 每个员工在创建时都会添加到数组中。我使用的是一种非静态方法,输入员工编号,然后返回数组索引 我有public int-getIndex(EN)。如何搜索数组以返回EN所在的索引,我正在尝试使用.equals当前,如e1.e

我有一个对象类型为Employee的数组:

Employee[] employees = new Employee[100];
每个员工都是

Employee(FirstName, LastName, MiddleInitial, Status, Gender, EN);
每个员工在创建时都会添加到数组中。我使用的是一种非静态方法,输入员工编号,然后返回数组索引

我有
public int-getIndex(EN)
。如何搜索数组以返回
EN
所在的索引,我正在尝试使用.equals当前,如
e1.equals(e2)
来检测
EN
,但我认为我没有正确地覆盖它来工作


谢谢

您需要使用
EN
而不是使用
equals()
方法进行搜索。如果在
Employee
类中相应地重写了
equals()
方法(如果EN等于,那么Employee对象等于)

通常,您可以这样做:-

public int getIndex(EN){
    int myIndex = -1;
    for(int i=0;i<empArray.length;i++){
        if(empArray[i].getEN()==EN){// Assuming EN is a number, else if its a String, use the equals() method.
            myIndex = i;
            break;
        }
    }
    return myIndex;
}
public int-getIndex(EN){
int-myIndex=-1;
对于(int i=0;i

.equals()方法如何工作?对象类
中的默认equals()方法只执行==操作并返回布尔值。由于在数组中存储不同的employee对象,因此始终会得到假值。

如果要与静态值进行比较,只需执行以下操作:

for(Employee curr : employees)
{
   if(curr.getEN() == 10000)
     // do your magic
}

请不要使用数组。有一些集合可以减少您的代码。您说的“EN位于”是什么意思?另外,如果您使用equals,请向我们显示您的equals覆盖。什么是EN?我的意思是说,如果EN=10000,它将搜索EN也为10000的数组索引
but I don't think I have overridden it properly to work....
for(Employee curr : employees)
{
   if(curr.getEN() == 10000)
     // do your magic
}