首页 > 其他 > 详细

HashSet源码分析

时间:2015-05-29 18:05:06      阅读:232      评论:0      收藏:0      [点我收藏+]
// HashSet的关键源码
public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, java.io.Serializable
{
	// HashSet中封装的HashMap,这个map也是数据储存的地方
    private transient HashMap<E,Object> map;
	
	//在add方法中调用map.put(key,value)方法,把要添加的元素传给key,把PRESENT传给Value
    private static final Object PRESENT = new Object();
	
	// HashSet默认的构造方法,构造了一个HashMap
    public HashSet() {
        map = new HashMap<>();
    }
	
	// 添加一个元素
    public boolean add(E e) {
		//调用map.put(key,value)方法,若添加成功,则put方法返回null,进而add方法返回true
		// *****HashSet集合中添加进来的元素是存放在HashMap中的Key中,而HashMap中的Value则放一个没有任何意义的Object对象PRESENT
        return map.put(e, PRESENT)==null;
    }	
	
	// map.remove(key)方法,若存在该key,则返回key.value,否则返回null
    public boolean remove(Object o) {
        return map.remove(o)==PRESENT;
    }
	
}


HashSet源码分析

原文:http://blog.csdn.net/wodewutai17quiet/article/details/46238841

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!