У меня есть карта типа Map<Long, Long>
. Ключ представляет собой уникальный идентификатор Employee
. Значение представляет количество времени, которое он работал. У меня тоже есть List<ProjectEmployee>
. ProjectEmployee
определяется следующим образом:
public class ProjectEmployee {
private Employee employee;
private Project project;
private Long workTime;
}
Всегда есть только один ProjectEmployee
на сотрудника. Таким образом, ProjectEmployee
может быть однозначно идентифицирован его сотрудником.
Теперь я хочу скопировать значение, сохраненное на карте, в workTime
из ProjectEmployee
, идентификатор сотрудника которого равен ключу карты , Так, например, если на карте есть пара 10=>20
, я хотел бы найти ProjectEmployee
, чей сотрудник имеет идентификатор 10
и установить для поля workTime
этого ProjectEmployee
значение 20.
Я хотел бы знать, есть ли способ сделать это менее чем за O (n ^ 2). Наивный подход, о котором я думаю, состоит в том, чтобы перебирать всю карту и внутри l oop, перебирать все ProjectEmployees
, пока я не найду тот, который ищет текущую пару карт, а затем скопировать поле.
Предположим, что каждый ключ идентификатора сотрудника внутри Map<Long, Long>
содержит ровно один ProjectEmployee
, с которым он может быть сопоставлен в данном списке.