zoukankan      html  css  js  c++  java
  • 利用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();
        }
        
    }
  • 相关阅读:
    滚动图片
    Iframe自动适应高度
    我的生活,我的精彩!
    静下心来
    写给关心我的人
    关于考研
    按时间自动刷新页面
    破除网页鼠标右键禁用的十大绝招
    DotNetNuke 皮肤制作白皮书
    WollOp
  • 原文地址:https://www.cnblogs.com/frankyou/p/9580585.html
Copyright © 2011-2022 走看看