1.16 HashSet和HashMap区别
- HashSet是单列集合,实现的是List,只能存放对象;而HashMap是双列集合,实现的是Map,能存放键值对;
- HashSet底层使用了HashMap,但只用到了HashMap的key,value统一set了final Object PRESENT = new Object();
- HashSet使用add添加元素,而HashMap使用put添加元素;
- HashMap使用key计算HashCode,而HashSet使用对象计算HashCode;
- HashSet使用拉链法equals到了相同的对象时,不允许再添加,没有替换操作;而HashMap找到了key相等的键值对时,用新的value替换旧的value;
- HashSet的效率不如HashMap,因为HashMap用key(key一般是整型或String)来计算hashCode来查找,而HashSet要计算对象的hashCode,会相对复杂;