关于Set

HashSet

HashSet源码

add的时候,当作value;

// 作为HashMap中的value常量,而key则是真正set要存的数据
private static final Object PRESENT = new Object();		

底层是HashMap,即由HashMap来实现的;

public HashSet() {
		map = new HashMap<>(); // 直接创建一个HashMap
	}

HashMap中put方法,简单说:

  • key - 与指定值相关联的键。
  • value - 与指定键关联的值。

返回值:当存在这个key的时候,会覆盖掉原来的value并返回oldvalue,也就是旧值。

对返回值的进一步解释:

  1. 如果没有键映射,则返回NULL。
  2. 该函数返回与指定键关联的旧值。
  3. 这个操作不管啥条件都会覆盖旧的。

public boolean add(E e) {
	return map.put(e, PRESENT)==null;// 添加元素,将数据作为key
}

所以当是一个新的元素加入Set中, HashSet.add()返回的是ture,否则是false;

if (!set.add(num)) {
	repeat = num;
	break;
}

所以可以用以上命令进行判断是否有重复,且没有的情况进行了add操作!

posted @ 2021-09-11 20:39  Dfyd  阅读(49)  评论(0)    收藏  举报