一
<span style="font-size:14px;"><span style="font-size:14px;">public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable
</span></span>
HashSet继承AbstractSet类,实现Set、Cloneable、Serializable接口。
AbstractSet提供了 Set 接口的骨干实现,从而最大限度地减少了实现此接口所需的工作。
Set接口是一种不包括重复元素的Collection,Set维持自己的内部排序,所以随机访问没有任何意义。
二
<span style="font-size:14px;">public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable {
private transient HashMap<E,Object> map;
}</span>
HashSet底层使用HashMap保存所有元素,所以HashSet是基于HashMap实现的。
三
Hashset中不允许出现重复对象,元素的位置也是不确定的,那么在hashset中怎样判定元素是否重复的呢?
Java集合中判断两个对象是否相等的规则
第一步:调用hashCode(),判断两个对象的哈希值是否相等;
第二步:调用equals(),判断是否返回true 。