Поиск элемента в связанном списке
-
03-07-2019 - |
Вопрос
Если у меня есть LinkedList объектов Employee ...
У каждого сотрудника есть имя и поля идентификатора.
У меня есть список вызовов linkList ....
Если я хочу узнать, содержит ли в списке сотрудник, которого я делаю:
list.contains(someEmployeeObject)
Как насчет того, чтобы узнать, содержит ли список сотрудника на основе идентификатора сотрудника?
допустим, у меня есть следующий метод:
public boolean containsEmployeeByID(int id)
Как узнать, содержит ли список объект сотрудника с идентификатором параметра?
Решение
Просто пройдитесь по списку и ищите совпадения. Если вы делаете это часто и изменяете список нечасто, сначала создайте индекс карты.
List<Employee> list = ...
for (Employee e : list)
if (e.getID() == id)
return true;
return false;
Тем не менее, сохранение сотрудников в LinkedList ?? Что за странный пример проблемы ...
Другие советы
Может быть, вам следует использовать карту, ключом которой является идентификатор, а значением - имя сотрудника или объект сотрудника?
Вы можете переопределить метод equals () для сравнения на основе идентификатора, однако, как правило, это не лучшая практика.
Другой вариант - создать HashMap, а затем вы сможете получить своих сотрудников по их идентификатору.
for (Employee empl : list) {
map.put(empl.getId(), empl);
}
String idLookup = "1234";
Employee employee = map.get(idLookup);