HashSet结构图
HashSet主要方法
- public boolean add(E e)
- public boolean remove(Object o)
HashSet方法解读
public boolean add(E e)源码:
//hashset 利用的是hashmap,所以每次放入的value都是PRESENT
private static final Object PRESENT = new Object();
public boolean add(E e) {
//可以看到,hashset利用的是hashmap的key,把它对应的值放入到key里,value放入的都是固定的值
return map.put(e, PRESENT)==null;
}
public boolean remove(Object o)源码:
public boolean remove(Object o) {
//hashmap的删除最终会返回删除对象的value值,hashset通过判断这个value值是不是等于PRESENT来判断是否删除成功
return map.remove(o)==PRESENT;
}
HashSet遍历方式
// one
for (Object o : set) {
System.out.println(o);
}
// two
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
HashSet其他特性介绍
- hashset是由hashmap构成的,主要利用的就是hashmap的key来保存相应的值
- hashset的值是不可以重复的,主要性质是由hashmap决定的,hashmap重复的key算一个key,hashset是可以放入为空的元素的。
- hashset也不是线程安全的,多线程环境下操作也是有问题的。