HashSet 源码解读

  1. 云栖社区>
  2. 博客>
  3. 正文

HashSet 源码解读

yichudu 2016-04-22 13:23:00 浏览578
展开阅读全文

HashSet是基于HashMap来实现的,操作很简单,更像是对HashMap做了一次“封装”,而且只使用了HashMap的key来实现各种特性。

1. 类的定义

public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, java.io.Serializable
{
	 private transient HashMap<E,Object> map;
	 // Dummy value to associate with an Object in the backing Map
	private static final Object PRESENT = new Object();
	/*...*/
}

map:内部的数据结构。HashSet是基于HashMap来实现的。
PRESENT:是用来模拟一个假的value来用。

2.主要操作

 public boolean add(E e) {
        return map.put(e, PRESENT)==null;
    }
	public boolean remove(Object o) {
        return map.remove(o)==PRESENT;
    }
	 public boolean contains(Object o) {
        return map.containsKey(o);
    }

如上面代码所见,直观且简单。

网友评论

登录后评论
0/500
评论
yichudu
+ 关注