因为HashSet合同指定了
remove()返回值(true如果指定的对象存在并被删除)。为此,它使用包装的
HashMap#remove()方法返回已删除的值。
如果要存储
null而不是存储对象,则对
HashMap#remove()return的调用将返
回null,这与尝试删除不存在的对象的结果没有区别,并且
HashSet.remove()无法履行的约定。

因为HashSet合同指定了
remove()返回值(true如果指定的对象存在并被删除)。为此,它使用包装的
HashMap#remove()方法返回已删除的值。
如果要存储
null而不是存储对象,则对
HashMap#remove()return的调用将返
回null,这与尝试删除不存在的对象的结果没有区别,并且
HashSet.remove()无法履行的约定。