База данных не является автоматически эффективной; вам действительно нужно настроить базу данных (поместив индексы в соответствующие столбцы), чтобы она могла эффективно выполнять поиск.
Аналогичным образом вы можете оптимизировать свой код для скорости. Если вам нужно сделать много поисков по нескольким критериям, вы можете сделать для этого специальные коллекции. Похоже на индекс по базе данных.
Вы сделаете это, не только вставив своего пользователя в список пользователей, но и поместив того же пользователя, например, в карту, привязанную к роли:
public void addUser(User user) {
users.add(user);
// your index
if (!usersByRole.containsKey(user.getRole()) {
usersByRole.put(user.getRole(), new ArrayList<User>());
}
usersByRole.get(user.getRole()).add(user);
}
public List<User> findByRole(String role) {
if (!usersByRole.containsKey(role)) {
return Collectsions.emptyList();
}
return Collections.unmodifieableList(usersByRole.get(role));
}