java.util源码系列解读之HashSet

Java中set集合接口: 用于存储没有重复元素(equals()和hashCode())的集合,可以存储null元素.

下面详细介绍HashSet
HashSet实现方式: 通过hash索引的方式来存储和取值,内部通过维护一个HashMap来实现的,我们知道HashMap的key是唯一的不能重复的,并且也是通过hash方式来索引的, 这一点特性恰好是跟HashSet不谋而合,所以HashSet是直接通过HashMap来实现的.他的所有操作都是间接调用的HashMap方法来实现的

类定义

public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, java.io.Serializable

成员变量

修饰符 变量名 作用
private transient HashMap<E,Object> map 内部维护的map
private static final Object PRESENT = new Object() 存放在map中的值对象,做占位而已

构造方法

public HashSet() {
    map = new HashMap<>();
}

public HashSet(int initialCapacity) {
    map = new HashMap<>(initialCapacity);
}

方法

只列举几个方法, 他的具体实现请参考HashMap讲解

public Iterator<E> iterator() {
    return map.keySet().iterator();
}

public int size() {
    return map.size();
}

public boolean contains(Object o) {
    return map.containsKey(o);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 9,726评论 0 16
  • 实际上,HashSet 和 HashMap 之间有很多相似之处,对于 HashSet 而言,系统采用 Hash 算...
    曹振华阅读 7,210评论 1 37
  • HashMap 是 Java 面试必考的知识点,面试官从这个小知识点就可以了解我们对 Java 基础的掌握程度。网...
    野狗子嗷嗷嗷阅读 11,674评论 9 107
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 5,410评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,148评论 18 399