【转载】 原文链接
1. 概述
This class implements the Set interface, backed by a hash table (actually a HashMap instance). It makes no guarantees as to the iteration order of the set; in particular, it does not guarantee that the order will remain constant over time. This class permits the null element.
HashSet是基于HashMap来实现的,操作很简单,更像是对HashMap做了一次“封装”,而且只使用了HashMap的key来实现各种特性,我们先来感性的认识一下这个结构:
1 | HashSet<String> set = new HashSet<String>(); |
其大致的结构是这样的:
1 | private transient HashMap<E,Object> map; |
map
是整个HashSet的核心,而PRESENT
则是用来造一个假的value
来用的。
2. 基本操作
1 | public boolean add(E e) { |
基本操作也非常简单,就是调用HashMap
的相关方法,其中value
就是之前那个dummy
的Object
。所以,只要了解 HashMap
的实现就可以了。