HashSet, LinkedHashSet源码
2020-04-14 本文已影响0人
后来丶_a24d
目录
- HashSet
- LinkedHashSet
HashSet
- 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素, value为
// 定义一个虚拟的Object对象作为HashMap的value,将此对象定义为static final。
private static final Object PRESENT = new Object();
- add方法之类也都是调用hashmap
// 如果是更新元素hashmap返回非空,所以这里能通过判断是否为空返回add是否成功
// 因为hashmap更新时value是相同的,这就保证了set无重复值
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
LinkedHashSet
- 基于LinkedHashMap实现,思路与HashSet一致