• 利用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();
        }
        
    }
  • 相关阅读:
    MSF进程迁移
    中间件漏洞之Nginx
    MSF常用payload生成
    消息中间件的对比
    Jetty简介
    Java中集合转数组,数组转集合
    SpringCloud简介
    码云上添加ssh密匙
    在Dubbo中使用高效的Java序列化(Kryo和FST)
    dubbo-负载均衡
  • 原文地址:https://www.cnblogs.com/frankyou/p/9580585.html
Copyright © 2020-2023  润新知