Java中的Set集合以及HashSet
Set集合:
Set继承自Collection,所以没有什么特别的方法。
需要注意的是,Set集合不包含重复元素,我们重点了解Set集合如何保证不包含多余元素。
HashSet:
HashSet如何保证元素唯一?
我们第二次添加"abc"到HashSet,"abc"从add()传入put()中的Key,然后到putVal中的key,
putVal中的hash(key)是根据算法,把元素的一些信息映射成哈希值,用来hashcode()。
第一个if,判断hash表是否为空,我们的hash表不为空
第二个if,一个看不懂的算法,意思是根据hash(key)得到的hash值寻址到对应hash表的位置P,这个P位置是空的么?
如果是空,则就填入"abc"。
如果不是,我们进入第一个else,我们的"abc"与P位置内的元素进行比较:
k = p.key;
key.equals(k);
如果二者一样,那么就替换(这里是在hash数组,所以替换)
如果二者不同,那么进入第二个else,我们的"abc"循环与挂在P下面的链表中元素进行equals比较,
如果存在一致的,则把"abc"丢弃,否则就循环找到链表尾,把"abc"挂在表尾。
重写HashCode