考虑以下示例:
public Optional<User> getUser(Integer id) {
for(User user : usersSet) {
if(user.getId().equals(id)) return Optional.of(user);
}
return Optional.empty();
}
public void deleteUser(Integer id) {
User user = getUser(id).orElseThrow(new RuntimeException("User not found"));
boolean result = usersSet.remove(user);
}
是否存在结果为假的情况?
我问,因为我不知道是否有必要检查HashSet的remove
方法的结果。
答案 0 :(得分:3)
答案 1 :(得分:2)
usersSet
可能是java.util.Set
个实例
Set
依赖于equals()
方法进行添加/删除操作。
因此boolean result = usersSet.remove(user);
只有在使用true
方法的相同条件时才会覆盖equals()
类的User
,才会返回getUser()
。例如简化:return user.getId().equals(id);
答案 2 :(得分:0)
YES。
在您的情况下,结果可能为false ,因为您的users
对象和userSet都不同。此外,这取决于您为equal()
类
User
方法的方式