今天学习一下HashSet,之前也用的少,但是自己也有必要了解一下什么是hashSet。简单地概括一下hashSet的一些关键点
1.无参构造器
发现set底层是依靠了hashMap的。
2.add(E e)
(1)可以看见是讲传进的参数当成map的key,也因此需要对传进的参数重写equals()方法。
(2)在map里,如果是key不存在,那么会返回null,如果key存在,就会替换,并且返回原本的key对应的value。
(3)由(2)可以得出,set是不能存放相同元素的。
3.contains(E e)
其实就是调用了map的containsKey,这一方法可以在我的hashMap博客中找到
4.remove(e)
其实也是调用map.remove(key)的方法
5.讲一下hashSet的遍历吧
还是使用set.iterator()方法
再接着KeyIterator往下看,返现KeyIterator只有next()方法,并且是返回k,那么hasNext(),remove()都是在hashIterator里面了
进入关键类:hashIterator里,
可以看见next()方法其实关键在于hashIterator的nextNode()方法。
最后一个是remove()方法。
也就是调用了map的removeNode(hash,key,null,matchValue,movable)方法,然后更新expectedModCount的值