You can use the filter function from the Google Collections; however, you will still need to construct a predicate object, and if you want to manipulate the result, you will have to construct another collection and pass the result in, since the result of filter is an immutable filtered view of the original collection.
To make this more concrete:
List<User> selectedUsers = new ArrayList<User>(
Iterables.filter(
this.getUsers(),
new Predicate<User>()
{
public boolean apply(User usr){
return usr.isSelected();
}
}
));
Of course, this is not really that much cleaner (unless you make a separate class for your predicate and happen to reuse it in a bunch of places), and it actually returns the list of users, not their IDs... you would have to use a "transform" to get their IDs, so personally, I would just go with what you have now.