当前位置: 首页 > news >正文

c# Dictionary、ConcurrentDictionary的使用

Dictionary

Dictionary 用于存储键-值对的集合。如果需要高效地存储键-值对并快速查找,请使用 Dictionary。

注意,键必须是唯一的,值可以重复。

using System;
using System.Collections.Generic;
using System.Linq;class Program
{static void Main(){// 创建一个DictionaryDictionary<string, int> ageDictionary = new Dictionary<string, int>();// 添加元素ageDictionary["Alice"] = 25;ageDictionary["Bob"] = 30;// 检查是否包含键if (ageDictionary.ContainsKey("Alice")){Console.WriteLine("存在键 'Alice'");}// 获取值int aliceAge = ageDictionary["Alice"];Console.WriteLine($"Alice 的年龄是 {aliceAge}");// 修改值ageDictionary["Alice"] = 26;Console.WriteLine($"Alice 的年龄现在是 {ageDictionary["Alice"]}");// 遍历Dictionaryforeach (var pair in ageDictionary){Console.WriteLine($"{pair.Key}: {pair.Value}");}// 删除元素ageDictionary.Remove("Alice");// 获取所有的键或值var keys = ageDictionary.Keys.ToList();var values = ageDictionary.Values.ToList();}
}

ConcurrentDictionary

ConcurrentDictionary 与 Dictionary 类似,但是支持多线程并发操作,适用于并发编程场景。
它提供了线程安全的操作,允许多个线程同时读取和修改数据,而不需要额外的锁定。

using System;
using System;
using System.Collections.Concurrent;class TestConcurrentDictionary
{static void Main(){// 1. 初始化ConcurrentDictionary<string, int> dictionary = new ConcurrentDictionary<string, int>();// 2. 添加或更新元素// 尝试添加一个新的键值对dictionary.TryAdd("key1", 1);// 如果键不存在,则添加键值对;如果键已存在,则更新其值dictionary.AddOrUpdate("key1", 1, (key, oldValue) => oldValue + 1);// 3. 获取元素// 尝试获取与指定键关联的值int value;if (dictionary.TryGetValue("key1", out value)){Console.WriteLine($"Value for key1: {value}");}// 4. 删除元素// 尝试移除指定键的键值对int removedValue;if (dictionary.TryRemove("key1", out removedValue)){Console.WriteLine($"Removed value: {removedValue}");}// 5. 其他方法// 获取与指定键关联的值;如果键不存在,则使用指定的函数或值添加键值对int newValue = dictionary.GetOrAdd("key2", k => 2);Console.WriteLine($"Value for key2: {newValue}");// 6. 遍历foreach (var kvp in dictionary){Console.WriteLine($"{kvp.Key}: {kvp.Value}");}}
}

相关文章:

c# Dictionary、ConcurrentDictionary的使用

Dictionary Dictionary 用于存储键-值对的集合。如果需要高效地存储键-值对并快速查找&#xff0c;请使用 Dictionary。 注意&#xff0c;键必须是唯一的&#xff0c;值可以重复。 using System; using System.Collections.Generic; using System.Linq;class Program {stati…...

大数据中间件——Kafka

Kafka安装配置 首先我们把kafka的安装包上传到虚拟机中&#xff1a; 解压到对应的目录并修改对应的文件名&#xff1a; 首先我们来到kafka的config目录&#xff0c;我们第一个要修改的文件就是server.properties文件&#xff0c;修改内容如下&#xff1a; # Licensed to the …...

HarmonyOS/OpenHarmony原生应用-ArkTS万能卡片组件Slider

滑动条组件&#xff0c;通常用于快速调节设置值&#xff0c;如音量调节、亮度调节等应用场景。该组件从API Version 7开始支持。无子组件 一、接口 Slider(options?: {value?: number, min?: number, max?: number, step?: number, style?: SliderStyle, direction?: Ax…...

SpringCloud: sentinel链路限流

一、配置文件要增加 spring.cloud.sentinel.webContextUnify: false二、在要限流的业务方法上使用SentinelResource注解 package cn.edu.tju.service;import com.alibaba.csp.sentinel.annotation.SentinelResource; import com.alibaba.csp.sentinel.slots.block.BlockExcept…...

UML 中的关系

种类 继承、实现、组合、聚合、关联、依赖 理解 继承和实现的关系强度最大。组合代表着实体之间共同构成一个主体内部的组成部分无法单独支撑&#xff0c;聚合则代表层级更高的一种关联涉及的实体都是独立的个体共同组合起来构成一个主体 个体之间是可以单独工作的。 组合和…...

ChatGPT技术或加剧钓鱼邮件攻击

我们对ChatGPT这一新技术并不陌生&#xff0c;也早就听闻ChatGPT可以通过某种方式绕过安全机制&#xff0c;对目标进行入侵。 ChatGPT的“越狱”技术已经迭代数次&#xff0c;甚至有了先进的“邪恶GPT”WormGPT和FraudGPT&#xff0c;两者都能快速实现钓鱼邮件骗局。 安全分析…...

哨兵1号后向散射系数土壤水分反演

哨兵1号后向散射系数土壤水分反演 数据导入 打开之前预处理之后的VH和VV极化的后向散射系数转存的tiff文件 导入实测点 选择KML转图层 kml文件是由奥维地图导出的.ovkml格式改后缀名得到的 提取采样点的后向散射系数 选择多值提取至点 右键打开点图层的属性表,发现…...

day3:Node.js 基础知识

day3:Node.js 基础知识 ​ 文章目录 day3:Node.js 基础知识创建第一个应用事件循环机制异步编程模块系统函数与回调函数路由和全局对象创建第一个应用 实例如下,在你项目的根目录下创建一个叫 helloworld.js 的文件,并写入以下代码: var http = require(http);http.cre…...

【RDMA】librdmacm库和连接建立过程

翻译&#xff1a;rdma_cm - RDMA通信管理器。 概述&#xff1a;rdma_cm是用于建立RDMA传输上的通信的管理器。 说明&#xff1a;RDMA CM是一个用于建立可靠连接和不可靠数据报数据传输的通信管理器。它为建立连接提供了一个RDMA传输中立的接口。该API基于套接字&#xff0c;但…...

如何使用Python抓取PDF文件并自动下载到本地

目录 一、导入必要的库 二、发送HTTP请求并获取PDF文件内容 三、将PDF文件内容写入到本地文件中 四、完整代码示例 五、注意事项 六、错误处理和异常处理 七、进一步优化 总结 在Python中&#xff0c;抓取PDF文件并自动下载到本地需要使用几个不同的库。首先&#xff0…...

人脸写真FaceChain的简单部署记录(一)

由【让你拥有专属且万能的AI摄影师AI修图师——FaceChain迎来最大版本更新】这篇文章开始出发进行人脸写真的尝试&#xff0c;笔者之前modelscope申请过免费额度&#xff0c;这里有适配的GPU环境可以提供测试。 但是很难抢到GPU资源&#xff0c;需要等待很久&#xff0c;可能才…...

linux虚机新增加磁盘后在系统中查不到

问题描述 在虚机管理平台上对某一linux主机添加了一块硬盘&#xff0c;但在系统中并未显示 通过执行 lsblk&#xff0c;并未看到新增的硬盘信息 解决方法 1. 可通过重启服务器解决 2. 如果不能重启服务器&#xff0c;可重新扫描下 scsi总线 查看总线&#xff1a; ls /s…...

js中隐式类型转换与toPrimitive

前言 我们知道Js的隐式类型转换主要出现在有运算符的情况下【逻辑运算符、关系运算符、算术运算符】。那么在接触toPrimitive之前&#xff0c;我们需要先知道其他值到某个类型值的转换规则。 其他值到数值的转换规则 Boolean&#xff1a; true — 1 false — 0 Null&#xf…...

家政系统预约小程序具备哪些功能?

预约家政小程序有这么大的市场需求加上这么多的好处&#xff0c;相信未来发展前景不错。也必将吸引很多商家投资者着手开发属于自己的上门家政APP小程序软件&#xff0c;在实际的开发过程中需要具备哪些功能呢&#xff1f; 一、用户端功能&#xff1a; 1. 用户注册登录&#x…...

【LeetCode】46. 全排列

1 问题 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2&#xff1a; 输入&#x…...

宏电股份RedCap产品亮相迪拜华为MBBF,并参与RedCap全球商用阶段性成果发布

10月10-11日&#xff0c;由华为主办的第十四届全球移动宽带论坛&#xff08;MBBF&#xff09;在阿联酋迪拜成功举办。MBBF期间&#xff0c;华为联合宏电股份等产业伙伴集中发布RedCap商用阶段性成果。本次发布是RedCap产业的关键里程碑&#xff0c;标志着RedCap在全球已具备规模…...

Harris图像角点检测

角点检测算法大致有三类:基于灰度图像的角点检测,基于二值图像的角点检测,基于轮廓曲线的角点检测。基于灰度图像的角点检测又可分为基于梯度、基于模板和基于模板梯度组合3类方法,其中基于模板的方法主要考虑像素领域点的灰度变化,即图像亮度的变化,将与邻点亮度对比足够…...

互联网Java工程师面试题·Java 总结篇·第七弹

目录 68、Java 中如何实现序列化&#xff0c;有什么意义&#xff1f; 69、Java 中有几种类型的流&#xff1f; 70、写一个方法&#xff0c;输入一个文件名和一个字符串&#xff0c;统计这个字符串在这个文件中出现的次数。 71、如何用 Java 代码列出一个目录下所有的文件&a…...

UVa658 It’s not a Bug, it’s a Feature!(Dijkstra)

题意 给出一个包含n个bug的应用程序&#xff0c;以及m个补丁&#xff0c;每个补丁使用两个字符串表示&#xff0c;第一个串表示补丁针对bug的情况&#xff0c;即哪些bug存在&#xff0c;以及哪些bug不存在&#xff0c;第二个串表示补丁对bug的修复情况&#xff0c;即修复了哪些…...

Object 类常用方法

在Java中&#xff0c;java.lang.Object类是所有类的根类&#xff0c;因此所有对象都继承了Object类的方法。以下是Object类中一些常用的方法&#xff1a; equals(Object obj)&#xff1a; 用于比较两个对象是否相等。默认实现是比较对象的引用是否相同&#xff0c;但通常需要…...

chromium 52 chrome 各个版本发布功能列表(58-84)

chromium Features 58-84 From https://chromestatus.com/features chromium58 Features:41 ‘allow-top-navigation-by-user-activation’ <iframe sandbox> keyword Adds a new keyword named “allow-top-navigation-by-user-activation” for iframe sandbox, wh…...

python web开发(四): Bootstrap

1.初步了解 别人已经写好的CSS样式&#xff0c;我们可以直接引用 下载 Link-BootStrap 解压&#xff0c;并放入到当前项目中 引用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</tit…...

【EI会议征稿】2024年遥感技术与测量测绘国际学术会议(RSTSM 2024)

2024年遥感技术与测量测绘国际学术会议&#xff08;RSTSM 2024&#xff09; 2024 International Conference on Remote Sensing Technology and Survey Mapping 2024年遥感技术与测量测绘国际学术会议&#xff08;RSTSM 2024&#xff09;将在2024年1月12-14日于吉林长春召开。…...

灵感:VUE2实现权限按钮控制

运用场景&#xff1b; 根据权限码&#xff0c;实现判断当前用户是否能控制权限按钮 一、在main.JS 里面写入全局指令《自定义权限按钮》 // S 自定义按钮权限 Vue.directive(has, {inserted: function(el, binding) {const buttonList JSON.parse(localStorage.getItem(butt…...

【2023最新版】Python全栈知识点总结

python全栈知识点总结 全栈即指的是全栈工程师&#xff0c;指掌握多种技能&#xff0c;并能利用多种技能独立完成产品的人。就是与这项技能有关的都会&#xff0c;都能够独立的完成。 全栈只是个概念&#xff0c;也分很多种类。真正的全栈工程师涵盖了web开发、DBA 、爬虫 、…...

推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。

文章目录 &#x1f31f; 离线评估&#xff1a;常用的推荐系统离线评估方法有哪些&#xff1f;&#x1f34a; 1. RMSE/MSE&#x1f34a; 2. MAE&#x1f34a; 3. Precision/Recall/F1-score&#x1f34a; 4. Coverage&#x1f34a; 5. Personalization&#x1f34a; 6. AUC &…...

day1:Node.js 简介

day1:Node.js 简介 文章目录 day1:Node.js 简介Node.js 是什么?Node.js 的历史和发展 ?Node.js 的主要用途和优势 ?Node.js 是什么? 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。 Node.js 是一个事…...

ESP RainMaker 客户案例 #1|Halonix

Halonix 是印度规模增长最快的电器公司之一&#xff0c;专注于照明、风扇等电器产品&#xff0c;正在进军健康和安全领域&#xff0c;现已推出紫外线消毒器和安全摄像头。Halonix 致力于创新&#xff0c;不断采用新兴前沿技术实现产品迭代&#xff0c;并通过加强设备间的互联互…...

【Linux】adduser命令使用

我们经常在linux系统中创建用户。有时候用的是 useradd 有时候用的是 adduser &#xff0c;好混乱啊到底用哪个啊。今天咱们一起来学习一下。 adduser与useradd的区别 useradd 命令是内置的 Linux 命令&#xff0c;在任何 Linux 系统中都可用。然而&#xff0c;使用这种低级…...

中文连续视觉语音识别挑战赛

视觉语音识别&#xff0c;也称唇语识别&#xff0c;是一项通过口唇动作来推断发音内容的技术。该技术在公共安全、助老助残、视频验真等领域具有重要应用。当前&#xff0c;唇语识别的研究方兴未艾&#xff0c;虽然在独立词、短语等识别上取得了长足进展&#xff0c;但在大词表…...