2015-10-09 4 views
-2

Я создаю небольшое приложение (для удовольствия), чтобы в основном отслеживать сотрудников и продукты в приложении java. Я создал arraylists и классы, но у меня возникли проблемы с их сортировкой и поиском. Вот что я пробовал до сих пор.Поиск ArrayList объектов в Java

Я пытаюсь искать объекты 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

Спасибо! Я сделал это, и это сработало ... есть ли более эффективный способ? ' if (test.getFirstName(). Equals (name.toString())) { System.out.println (test.getEmpInfo()); } ' –

+0

Да, это единственный метод, который вы можете использовать. иногда вам может не понадобиться 'name.toString()', если name является значением String. –

+0

Правда, сценарий в этом случае не может быть строкой, но я стараюсь, чтобы я справлялся со всеми возможными ошибками и делал наилучшую практику, но вы поднимаете хороший момент. Спасибо за помощь! –

Смежные вопросы