HashSet、HashMap比较

来源:互联网 发布:淘宝加盟代理是真的吗 编辑:程序博客网 时间:2024/06/03 15:34

首先明确的一点是:

HashSet底层是用HashMap实现的。

但是他并没有进行功能的扩展,相反,它的功能可以说是更加限制了。


区别:

HashSet是单列,HashMap是键值对(双列)。

HashSet值不能重复,HashMap键不能重复(相当于索引),值可以重复。

HashSet添加元素用add方法,HashMap用put方法。

HashSet加入重复的元素会报错,而HashMap加入重复的key会更新value,若不同的key的hashCode相同,则在同一个桶(bucket)形成一条链,最后添加的元素在链头。

HashSet实现了Collection接口,HashMap没有。


相同点:

1、哈希方法使用;

2、值允许null;


完成HashSet的存储时,要确保对象重写equals和hashCode方法。

如果没有重写,则使用这两个方法的默认实现。因为这两个方法是Object类中有的方法。

而object是所有类的超类。

(这里提醒一下,这个object父类不算进单继承的类的范围,而枚举类因为默认继承了java.lang.Enum类,因此不能再继承其他类,因此实际使用中枚举类只能实现接口,而不能继承


总结:

HashSet可以说是HashMap的key部分。

原创粉丝点击