Вы можете использовать функцию filter из Google Collections; однако вам все равно нужно будет создать объект предиката, и если вы хотите манипулировать результатом, вам придется создать другую коллекцию и передать результат, поскольку результат фильтра является неизменяемым фильтрованным представлением исходной коллекции.
Чтобы сделать это более конкретным:
List<User> selectedUsers = new ArrayList<User>(
Iterables.filter(
this.getUsers(),
new Predicate<User>()
{
public boolean apply(User usr){
return usr.isSelected();
}
}
));
Конечно, это не так уж и чище (если только вы не создадите отдельный класс для своего предиката и не будете использовать его много раз), и он действительно возвращает список пользователей, а не их идентификаторы ... вам придется использовать «преобразование», чтобы получить их идентификаторы, так что лично я бы просто использовал то, что у вас есть сейчас.