2015-10-09 62 views
-2

我正在构建一个小应用程序(用于娱乐),以基本跟踪java应用程序中的员工和产品。我创建了arraylist和类,但我无法排序通过他们和搜索..这是我到目前为止尝试..在Java中搜索对象的ArrayList

我试图根据员工搜索arraylist的对象命名

System.out.println("Enter name of employee to search: \n"); 
String name = keyboard.nextLine(); 
Iterator itr = employeeList.iterator(); 

while (itr.hasNext()) { 
    Employee test = (Employee) itr.next(); 

    if (test.getFirstName() == name.toString()) { 
    System.out.println(test.getEmpInfo()); 

    } 
} 

我的两难困境是,如果我在引号的名称替换name.toString()它的工作原理,但如果我用keyboard.nextLine()将无法正常工作,任何帮助将不胜不胜感激!

回答

0

这是java初学者最常见的问题。 使用equals()方法而不是==来比较Strings与java。所以修改你的代码如下。

if (test.getFirstName().equals(name.toString())) { 
    //your code 
} 

注:==用于比较二进制平等,其比较对象的内存位置。但.equals()可以重写,并根据指定的逻辑比较对象的值。

+0

谢谢! 我做到了这一点,它的工作......有没有更有效的方法? (test.getFirstName()。equals(name.toString())){ System.out.println(test.getEmpInfo()); }' –

+0

是的,这是您可以使用的唯一方法。有时如果name是一个String值,你可能不需要'name.toString()'。 –

+0

没错,在这种情况下,它可能不是一个字符串,但我一直在努力确保我处理所有可能的错误和做最佳实践,但您提出了一个好的观点..感谢您的帮助! –