码迷,mamicode.com
首页 > 其他好文 > 详细

HashSet源码分析

时间:2015-05-29 18:06:56      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:hashset

// 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源码分析

标签:hashset

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!