HashSet概述
对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比较简单,相关HashSet的操作,基本上都是直接调用底层HashMap的相关方法来完成,其实看过了HashMap源码的同学,就会发现HashSet的实现好简单。
HashSet特点
非线程安全
允许null值
添加值得时候会先获取对象的hashCode方法,如果hashCode 方法返回的值一致,则再调用equals方法判断是否一致,如果不一致才add元素。
注意: 对于HashSet中保存的对象,请注意正确重写其equals和hashCode方法,以保证放入的对象的唯一性。
HashSet源码分析
1 | public class HashSet<E> |
总结
基本上hashset就是hashmap的一个包装类,基本所有方法都是包装了hashmap的方法。