Если вы не переопределили equals в своем классе User, он проверит, является ли это тем же экземпляром, а не равны ли значения полей.Если вы не хотите переопределять equals, используя только идентификатор, вы можете сохранить пользователей в
Map<String,User> users; => users.containsKey(id)
, где ключом является id, или оставить только идентификаторы в отдельном
Set<String> ids; and call contains. => ids.contains(id)