当前位置: 首页 > 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;但通常需要…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...