HashSet实现中的Null对象
在Java API中,HashSet的实现使用Object作为
内部HashMap 的值,
// Dummy value to associate with an Object in the backing Mapprivate static final Object PRESENT = new Object();
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
但是HashMap允许其值为null。我认为并不需要填写该值,那么为什么要这样做呢?
回答:
因为HashSet合同指定了remove()
返回值(true如果指定的对象存在并被删除)。为此,它使用包装的
HashMap#remove()
方法返回已删除的值。
如果要存储null
而不是存储对象,则对HashMap#remove()return
的调用将返回null
,这与尝试删除不存在的对象的结果没有区别,并且HashSet.remove()
无法履行的约定。
以上是 HashSet实现中的Null对象 的全部内容, 来源链接: utcz.com/qa/422409.html