Поиск элемента в LinkedList - PullRequest
1 голос
/ 02 мая 2009

Если у меня есть LinkedList объектов Employee ...

Каждый сотрудник имеет поля Имени и ИД.

У меня есть список вызовов linkList ....

Если я хочу посмотреть, есть ли в списке сотрудник, которого я делаю:

list.contains(someEmployeeObject)

Как насчет того, чтобы узнать, содержит ли список сотрудника на основе идентификатора сотрудника ..

допустим, у меня есть следующий метод:

public boolean containsEmployeeByID(int id)

Как узнать, содержит ли список объект сотрудника с идентификатором параметра?

Ответы [ 3 ]

4 голосов
/ 02 мая 2009

Просто пройдитесь по списку и ищите совпадения. Если вы делаете это часто и изменяете список нечасто, сначала создайте индекс карты.

List<Employee> list = ...
for (Employee e : list)
   if (e.getID() == id)
      return true;
return false;

Тем не менее, сохранение сотрудников в LinkedList ?? Что за странный пример проблемы ...

1 голос
/ 02 мая 2009

Вы можете переопределить свой метод equals () для сравнения на основе Id, однако, как правило, это не лучшая практика.

Другой вариант - создать HashMap, а затем вы можете получить своих сотрудников по их идентификатору.

for (Employee empl : list) {
    map.put(empl.getId(), empl);
}

String idLookup = "1234";

Employee employee = map.get(idLookup);
1 голос
/ 02 мая 2009

Может быть, вам следует использовать карту, ключом которой является идентификатор, а значением - имя сотрудника или объект сотрудника?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...