Java面试:如何从源码层面解析HashSet的内部实现机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计400个文字,预计阅读时间需要2分钟。
面试官:请简述HashSet有哪些特点?应聘者:HashSet实现Set接口,存储元素无序且不重复。
面试官:那么如何保证HashSet中的元素不重复?应聘者:因为HashSet底层基于HashMap实现,HashMap的键值对结构保证了元素唯一性。
面试官:请问HashSet有哪些特点?
应聘者:HashSet实现自set接口,set集合中元素无序且不能重复;
面试官:那么HashSet 如何保证元素不重复?
应聘者:因为HashSet底层是基于HashMap实现的,当你new一个HashSet时候,实际上是new了一个map,执行add方法时,实际上调用map的put方法,value始终是PRESENT,所以根据HashMap的一个特性: 将一个key-value对放入HashMap中时,首先根据key的hashCode()返回值决定该Entry的存储位置,如果两个key的hash值相同,那么它们的存储位置相同。
如果这个两个key的equalus比较返回true。那么新添加的Entry的value会覆盖原来的Entry的value,key不会覆盖。
本文共计400个文字,预计阅读时间需要2分钟。
面试官:请简述HashSet有哪些特点?应聘者:HashSet实现Set接口,存储元素无序且不重复。
面试官:那么如何保证HashSet中的元素不重复?应聘者:因为HashSet底层基于HashMap实现,HashMap的键值对结构保证了元素唯一性。
面试官:请问HashSet有哪些特点?
应聘者:HashSet实现自set接口,set集合中元素无序且不能重复;
面试官:那么HashSet 如何保证元素不重复?
应聘者:因为HashSet底层是基于HashMap实现的,当你new一个HashSet时候,实际上是new了一个map,执行add方法时,实际上调用map的put方法,value始终是PRESENT,所以根据HashMap的一个特性: 将一个key-value对放入HashMap中时,首先根据key的hashCode()返回值决定该Entry的存储位置,如果两个key的hash值相同,那么它们的存储位置相同。
如果这个两个key的equalus比较返回true。那么新添加的Entry的value会覆盖原来的Entry的value,key不会覆盖。

