• c# Dictionary、ConcurrentDictionary的使用


    Dictionary

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

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

    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    class Program
    {
        static void Main()
        {
            // 创建一个Dictionary
            Dictionary<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"]}");
    
            // 遍历Dictionary
            foreach (var pair in ageDictionary)
            {
                Console.WriteLine($"{pair.Key}: {pair.Value}");
            }
    
            // 删除元素
            ageDictionary.Remove("Alice");
    
            // 获取所有的键或值
            var keys = ageDictionary.Keys.ToList();
            var values = ageDictionary.Values.ToList();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    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}");
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
  • 相关阅读:
    VisualDrag低代码拖拽模板
    Windows下的RabbitMQ安装教程(遇到很多无语的问题,已解决)
    易基因:单细胞转录组测序(scRNA-seq)揭示猪窦卵泡细胞异质性和通讯模式|项目文章
    百度地图 缩放组件
    代码随想录算法训练营第五十九天| 503.下一个更大元素II,42. 接雨水
    核酸采样机器人在上海问世;顺丰同城试点无人机急送服务;汽车行业董事长薪酬榜出炉;
    Redis集群启动
    Qt之mouseMoveEvent不点击鼠标也能捕获鼠标位置
    2-39 JSP之EL表达式
    421. 数组中两个数的最大异或值
  • 原文地址:https://blog.csdn.net/modifier_/article/details/133917113