利用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();
} }
利用ConcurrentHashMap来实现一个ConcurrentHashSet的更多相关文章
- 利用SCI做的一个足球答题系统
SCI,异步串行通信接口,内置独立的波特率产生电路和SCI收发器,可以选择发送8或9个数据位(其中一位可以指定为奇或偶校验位). SCI是全双工异步串行通信接口,主要用于MCU与其他计算机或设备之间的 ...
- 利用jquery+iframe做一个ajax上传效果
以下是自学it网--中级班上课笔记 网址:www.zixue.it html页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict ...
- 利用jdbc简单封装一个小框架(类似DBUtils)
利用jdbc写的一个类似DBUtils的框架 package com.jdbc.orm.dbutils; import java.io.IOException; import java.io.Inpu ...
- 利用Zynq Soc创建一个嵌入式工程
英文题目:Using the Zynq SoC Processing System,参考自ADI的ug1165文档. 利用Zynq Soc创建一个嵌入式工程,该工程总体上包括五个步骤: 步骤一.新建空 ...
- C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值
转自goldeneyezhang原文 C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值 C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值总结: 对应某个类的 ...
- 手把手教你如何利用 HeroKu 免费获取一个 Scrapyd 集群
手把手教你如何利用 HeroKu 免费获取一个 Scrapyd 集群 本文原始地址:https://sitoi.cn/posts/48724.html 准备环境 一个 GitHub 的账号 一个 He ...
- 如何利用开源思想开发一个SEO友好型网
如果你有一个网站需要去做SEO优化的时候,不要期望你的努力能立即得到回报.耐心等待并更正内容营销策略,最终会发现你的网站很受用户欢迎.下面就教你如何利用开源思维开发一个SEO友好型网站! 首先,你应该 ...
- 百度前端技术学院2018笔记 之 利用 CSS animation 制作一个炫酷的 Slider
前言 题目地址 利用 CSS animation 制作一个炫酷的 Slider 思路整理 首先页面包含三种东西 一个是type为radio的input其实就是单选框 二是每个单选框对应的label 三 ...
- 曹工说Tomcat4:利用 Digester 手撸一个轻量的 Spring IOC容器
一.前言 一共8个类,撸一个IOC容器.当然,我们是很轻量级的,但能够满足基本需求.想想典型的 Spring 项目,是不是就是各种Service/DAO/Controller,大家互相注入,就组装成了 ...
随机推荐
- Oracle学习笔记--第3章 使用sql*plus工具
使用sql*plus工具 1.sqlplus连接方式示例 sqlplus system/123[as sysdba]; 2.查看表结构命令;desc[ribe] e.g. desc scot ...
- AOJ 2224 Save your cats (Kruskal)
题意:给出一个图,去除每条边的花费为边的长度,求用最少的花费去除部分边使得图中无圈. 思路:先将所有的边长加起来,然后减去最大生成树,即得出最小需要破坏的篱笆长度. #include <cstd ...
- [CQOI2017]小Q的棋盘
题解: 好像有题解说可以贪心.. 显然这是一棵树,考虑树形dp 维护f[i][j]从点i往下走j再回来经过的最多点,g[i][j]从点i往下走j不用回来经过的最多点 转移方程还是挺显然的,枚举的时候像 ...
- NodeMCU入门(1):刷入At固件,透传数据到TcpServer和Yeelink平台
准备工作 1. NodeMCU LUA ESP8266 CP2102 WIFI Internet Development Board,仔细看背面可以看出自带cp2102模块,可以通过普通的手机充电 ...
- 063 日志分析(pv uv 登录人数 游客人数 平均访问时间 二跳率 独立IP)
1.需求分析 分析指标 pv uv 登录人数 游客人数 平均访问时间 二跳率 独立IP 2.使用的日志(一号店),会话信息 3.创建数据库 4.创建源表,存储源数据 5.创建我们需要的use表 6.创 ...
- Windows10下安装Maven以及Eclipse安装Maven插件 + 创建Maven项目
在官网下载Maven http://maven.apache.org/download.cgi 下载下来后加压缩,将apache-maven-3.5.4文件夹复制到想要存放它的位置,我放在了 ...
- Bmob后端云使用步骤
1.登录创建应用后得到id 2.在清单文件中添加权限 <uses-sdk android:minSdkVersion="8" android:targetSdkVersion ...
- MongoDB--集群
为什么需要集群 为了让数据安全 高(24* 7)数据可用性 灾难恢复 无停机维护(如备份,索引重建,压实) 读缩放(额外的副本读取) 副本集对应用程序是透明 设置集群 准备工作 在MongoDB的集群 ...
- AFP溢出攻击模块afp/loginext
AFP溢出攻击模块afp/loginext 在苹果Mac OS X 10.3.3及以前版本,AFP服务存在缓存区溢出漏洞CVE-2004-0430.利用该漏洞,用户可以基于LoginExt包执行任 ...
- 安装android studio&flutter
参考:https://flutterchina.club/setup-windows/ 1.安装jdk 2.android studio下载地址 https://developer.android. ...