HashSet源码阅读

mac2024-04-12  35

文章目录

一.参数分析1.map2.PRESENT 二.方法分析1.add2.remove

一.参数分析

1.map

HashSet只是使用该HashMap的key来实现,因为HashMap的key不会重复

private transient HashMap<E,Object> map;

2.PRESENT

HashSet不关心value,所以就用这个参数来作为Hashmap的value

private static final Object PRESENT = new Object();

二.方法分析

1.add

我们看了map的put方法实现应该知道,put对没有key的值会添加,而有的会覆盖。这边直接利用这种方式,关心的只是key

public boolean add(E e) { return map.put(e, PRESENT)==null; }

2.remove

把map对应的key移除掉

public boolean remove(Object o) { return map.remove(o)==PRESENT; }

这个主要是知道他这个类的想法吧,重点还是HashMap,请参考:HashMap源码阅读

最新回复(0)