使用非静态方法搜索Java数组
我有一个对象类型为Employee的数组:使用非静态方法搜索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[] 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
}