容器实现了Set接口,后端由hash table支持.每次在迭代的时候,容器不保证迭代遍历的顺序.可以存储null元素.
提供常数时间的基本操作:add remove contains add size
遍历的时间依赖于HashSet中的元素数量以及hashmap的capacity.因此,在性能非常重要的场景下,不适合于将HashSet的初始capacity设置的过大或者装载因子过低.
同样的HashSet也非线程安全,如果要想实现并发控制,可以再创建实例时使用以下方法:
Set s = Collections.synchronizedSet(new HashSet(...));
HashSet的类继承关系如下:
public class HashSet<E>
extends AbstractSet<E>
implements Set<E>, Cloneable, java.io.Serializable
实现的方式是,要存的东西是key,value统一用object来放入一个HashMap
提供的clone是浅拷贝