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();
        }
        
    }
  • 相关阅读:
    内存分配问题
    C++ assert 的一点说明
    强大的stringstream
    C++中随机数
    C++ 中new
    C++ 中string 详解 转载自 博客园
    未命名名字空间
    使用ifstream和getline读取文件内容[c++]
    6.bootstrap练习笔记-缩略图和list-group
    3.bootstrap练习笔记-媒体内容
  • 原文地址:https://www.cnblogs.com/frankyou/p/9580585.html
Copyright © 2011-2022 走看看