1) Я бы реализовал кэш на основе хеш-карты, а не списка:
Map cache = new HashMap<Integer, Employee>();
Таким образом, вы можете очень эффективно получить объект Employee по заданному идентификатору.
ДополнительноЯ бы не добавил установщик для идентификатора сотрудника, так как это может повредить отображение.Попробуйте установить идентификатор только через параметр конструктора.
- EDIT -
Если вы ДОЛЖНЫ использовать список:
2) Возможно, вы захотите сначала отсортировать его.Это позволит выполнять бинарный поиск (см. Collections.binarySearch (..) методы).Это требует реализации Comparator или Comparable интерфейса, чтобы определить порядок между объектами Employee.Кроме того, вам нужно будет создавать фиктивный объект Employee с требуемым идентификатором каждый раз, когда вы хотите выполнить поиск.
3) Если производительность не является проблемой, просто используйте List.indexOf (..) * * тысяча двадцать-один.Это требует реализации метода equals (..) в классе Employee.
4) Чтобы сделать это действительно без циклов, вы можете создать разреженный список, содержащий Employee с идентификатором N в индексе N. Этовозможно только в том случае, если диапазон значений идентификатора сотрудника не слишком велик.Преимущество - оптимальное время поиска.