HashMap实现 Map接口
HashSet实现Collection接口
HashSet底层是HashMap 好的 记住这个就可以了
HashSet只存放key, value: private static final Object PRESENT = new Object(); 一个Object常量对象
其value值为什么不是null ?
HashMap里面的remove: 返回删除的键值对的value 如果没有这个键 就返回null
public V remove(Object key) { Node<K,V> e; return (e = removeNode(hash(key), key, null, false, true)) == null ? null : e.value; }
HashSet里面的remove: 返回boolean 看是否删除成功
public boolean remove(Object o) { return map.remove(o)==PRESENT; }
如果HashSet的value是null 现在去删除一个空值 其结果会返回 true !!!
所以我们就不能判断是否移除成功