`
momsbaby1986
  • 浏览: 34019 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ConcurrentHashSet简单实现

    博客分类:
  • Java
 
阅读更多

 

import java.util.AbstractSet;
import java.util.ConcurrentModificationException;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

public class ConcurrentHashSet<E> extends AbstractSet<E> implements Set<E>, java.io.Serializable {

	private static final long serialVersionUID = -8672117787651310382L;

	private static final Object PRESENT = new Object();

private final ConcurrentHashMap<E, Object> map;
	
	public ConcurrentHashSet(){
	    map = new ConcurrentHashMap<E, Object>();
	}

                public ConcurrentHashSet(int initialCapacity){
        map = new ConcurrentHashMap<E, Object>(initialCapacity);
    }
                public Iterator<E> iterator() {
		return map.keySet().iterator();
	}
public int size() {
		return map.size();
	}
public boolean isEmpty() {
		return map.isEmpty();
	}
public boolean contains(Object o) {
		return map.containsKey(o);
	}
public boolean add(E e) {
		return map.put(e, PRESENT) == null;
	}
public boolean remove(Object o) {
		return map.remove(o) == PRESENT;
	}
public void clear() {
		map.clear();
	}

 

 

通过ConcurrentHashMap来间接实现

分享到:
评论

相关推荐

    ConcurrentHashSet:一个ConcurrentHashSet实现

    并发哈希集 基于.NET的ConcurrentDictionary的ConcurrentHashSet实现此实现支持每个项目的基本操作,而无需HashSet的set操作,因为它们在并发方案IMO中意义不大: var concurrentHashSet = new ConcurrentHashSet ( ...

    ConcurrentHashSet-main-源码.rar

    在Java多线程编程中,`ConcurrentHashSet`是一个重要的并发集合类,它继承自`AbstractSet`并实现了`Set`接口,提供了线程安全的哈希集合操作。本文将深入探讨`ConcurrentHashSet`的源码,解析其设计原理和实现细节。...

    基于dubbo中Listener的实现方法

    cachedWrapperClasses是一个ConcurrentHashSet,用于存储Wrapper类的实例。这种设计模式使得ProtocolListenerWrapper可以快速地获取Wrapper类的实例,从而提高了性能。 Listener的实现方式 在dubbo中,Listener的...

    数据结构哈希表

    C#提供了`ConcurrentDictionary, TValue&gt;`和`ConcurrentHashSet&lt;T&gt;`类,它们是线程安全的哈希表实现,适合多线程环境。 总结来说,哈希表是数据结构中的重要组成部分,尤其在C#中,`Dictionary, TValue&gt;`和`HashSet...

    026-SVM用于分类时的参数优化,粒子群优化算法,用于优化核函数的c,g两个参数(SVM PSO) Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    铅酸电池失效仿真comsol

    铅酸电池失效仿真comsol

    小程序项目-基于微信小程序的童心党史小程序(包括源码,数据库,教程).zip

    Java小程序项目源码,该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:小程序 后端框架:SSM/SpringBoot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven

    小程序项目-基于微信小程序的新生报到系统(包括源码,数据库,教程).zip

    Java小程序项目源码,该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:小程序 后端框架:SSM/SpringBoot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven

    springboot124中药实验管理系统设计与实现.zip

    springboot124中药实验管理系统设计与实现,含有完整的源码和报告文档

    解除劳动合同协议书.doc

    解除劳动合同协议书

    快速过滤图像融合Matlab代码.rar

    快速过滤图像融合Matlab代码.rar

    强调图像中内核形状(例如直线)的过滤器Matlab代码.rar

    强调图像中内核形状(例如直线)的过滤器Matlab代码.rar

    linux离线安装redis

    在内网linux服务器安装redis 在Linux环境中离线安装Redis是常见的需求,尤其是在内网服务器上,由于无法直接访问公网,我们需要提前下载Redis的源码包并手动安装。下面将详细解释如何进行这一过程。

    019考虑阶梯式碳交易机制与电制氢的综合能源系统热电优化 不能运行.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    微信小程序StartKitw_xapp-startkit.zip

    微信小程序StartKitw_xapp-startkit

    座位选择微信小程序版本.zip

    座位选择微信小程序版本

    机械臂代码_Mechanical_arm.zip

    机械臂代码_Mechanical_arm

    图像分割测试视频river-light.mp4

    图像分割测试视频river-light.mp4

    前端分析-2023071100789

    前端分析-2023071100789

    基于labview的生产者消费者循环源码.zip

    labview源码参考示例,可供参考学习使用

Global site tag (gtag.js) - Google Analytics