Java集合框架知识及HashMap和HashSet的区别

HashMap和HashSet的区别

HashSet实质

(1)HashSet是set的一个实现类,hashMap是Map的一个实现类,同时hashMap是hashTable的替代品(为什么后面会讲到). 
(2)HashSet以对象作为元素,而HashMap以(key-value)的一组对象作为元素,且HashSet拒绝接受重复的对象.HashMap可以看作三个视图:key的Set,value的Collection,Entry的Set。 这里HashSet就是其实就是HashMap的一个视图。 
HashSet内部就是使用Hashmap实现的,和Hashmap不同的是它不需要Key和Value两个值。 
往hashset中插入对象其实只不过是内部做了

      public boolean add(Object o) {
            return map.put(o, PRESENT)==null;
      }

其实HashSet就是基于HashMap,放了一个默认对象进去。

然后这里总结的特别好

HashMap可以看作三个视图:key的Set,value的Collection,Entry的Set。 这里HashSet就是其实就是HashMap的一个视图。 

翻译一下,Set视图代表不可重复的元素集合,Collection视图代表可重复的元素集合


然后HashMap的大致原理

就是bucket数组,hashcode可以重复,均匀分布是理想,可以扩大bucket,也可以进行红黑树处理。碰撞了会用拉链法来处理,一般8层后单链表转红黑树。

你可能感兴趣的:(java)