HashSet 源码解读

简介: HashSet是基于HashMap来实现的,操作很简单,更像是对HashMap做了一次“封装”,而且只使用了HashMap的key来实现各种特性。 1. 类的定义 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.

HashSet是基于HashMap来实现的,操作很简单,更像是对HashMap做了一次“封装”,而且只使用了HashMap的key来实现各种特性。

1. 类的定义

public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, java.io.Serializable
{
	 private transient HashMap<E,Object> map;
	 // Dummy value to associate with an Object in the backing Map
	private static final Object PRESENT = new Object();
	/*...*/
}

map:内部的数据结构。HashSet是基于HashMap来实现的。
PRESENT:是用来模拟一个假的value来用。

2.主要操作

 public boolean add(E e) {
        return map.put(e, PRESENT)==null;
    }
	public boolean remove(Object o) {
        return map.remove(o)==PRESENT;
    }
	 public boolean contains(Object o) {
        return map.containsKey(o);
    }

如上面代码所见,直观且简单。
目录
相关文章
|
29天前
|
Java uml
|
6月前
|
存储 Java
每日一道面试题之HashSet的实现原理~
每日一道面试题之HashSet的实现原理~
|
8月前
|
存储 算法 Java
HashSet源码剖析
HashSet源码剖析
33 0
|
10月前
|
存储 算法 Java
【Java集合框架 二】HashMap源码分析
【Java集合框架 二】HashMap源码分析
67 0
|
存储 算法
面试题:说一下HashMap和HashSet的实现原理?
面试题:说一下HashMap和HashSet的实现原理?
69 0
Java集合源码剖析——基于JDK1.8中HashSet、LinkedHashSet的实现原理
Java集合源码剖析——基于JDK1.8中HashSet、LinkedHashSet的实现原理
Java集合源码剖析——基于JDK1.8中HashSet、LinkedHashSet的实现原理
|
存储 安全 Java
java集合系列(3)ArrayList(源码分析)
这篇文章开始介绍ArrayList。ArrayList基本上是我们在平时的开发当中,使用最多的一个集合类了,它是一个其容量能够动态增长的动态数组。所以这篇文章,旨在从源码的角度进行分析和理解。为了使得文章更加有条理,还是先给出这篇文章的大致脉络: 首先,ArrayList的基本介绍和源码API(只给出方法分析,重要的方法给出详细代码)。 然后,介绍遍历ArrayList的几种方式 接下来,叙述一下ArrayList与其他集合关键字的区别和优缺点 最后,进行一个总结
213 0
java集合系列(3)ArrayList(源码分析)
|
存储 Java
HashSet的底层原理
HashSet的底层原理
101 0
|
存储 Java
HashMap源码解读
带你走进HashMap,了解HashMap的特性和HashMap源码解读(jdk7)。
139 0
HashMap源码解读
HashSet源码解读
HashSet源码解读一:先看其实现了哪些接口和继承了哪些类 1.实现了Serializable接口,表明它支持序列化。 2.实现了Cloneable接口,表明它支持克隆,可以调用超类的clone()方法进行浅拷贝。
623 0