利用ConcurrentHashMap来实现一个ConcurrentHashSet
利用ConcurrentHashMap来实现一个ConcurrentHashSet
package hashset; import java.io.Serializable; import java.util.AbstractSet; import java.util.Iterator; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; /** * @author xfyou * @date 2018/9/3 */ public class ConcurrentHashSet<E> extends AbstractSet<E> implements Set<E>, Serializable { private static final long serialVersionUID = -8672117787651310382L; private static final Object PRESENT = new Object(); private final ConcurrentHashMap<E, Object> map; public ConcurrentHashSet() { this.map = new ConcurrentHashMap<>(); } public ConcurrentHashSet(int initialCapacity) { this.map = new ConcurrentHashMap<>(initialCapacity); } @Override public Iterator<E> iterator() { return map.keySet().iterator(); } @Override public boolean isEmpty() { return map.isEmpty(); } @Override public boolean contains(Object o) { return map.containsKey(o); } @Override public boolean add(E e) { return map.put(e, PRESENT) == null; } @Override public boolean remove(Object o) { return map.remove(o) == PRESENT; } @Override public void clear() { map.clear(); } @Override public int size() { return map.size(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步