80.Dictionary 字典 C#例子

使用 C# 中的 Dictionary 数据结构

在 C# 中,Dictionary<TKey, TValue> 是一个非常强大的数据结构,用于存储键值对。它提供了高效的查找、插入和删除操作,适用于需要快速访问数据的场景。本文将通过一个简单的示例,介绍如何使用 Dictionary 来进行常见的操作。

创建和初始化字典

Dictionary 是一个泛型集合,需要指定键和值的类型。以下代码展示了如何创建一个 Dictionary<int, int> 并添加键值对:

cs 复制代码
// 创建一个新的 Dictionary<int, int> 实例
Dictionary<int, int> keyValues = new Dictionary<int, int>();

// 添加键值对到字典中
keyValues.Add(0, 100);
keyValues.Add(1, 200);
keyValues.Add(2, 300);
访问和检查字典

通过键可以快速访问字典中的值,同时也可以检查字典是否包含某个键或值:

cs 复制代码
// 通过键来访问值
int value = keyValues[2]; // 获取键为 2 的值

// 检查字典中是否包含某个键
bool containKey = keyValues.ContainsKey(3); // 返回 false

// 检查字典中是否包含某个值
bool containValue = keyValues.ContainsValue(100); // 返回 true
更新和删除键值对

字典中的值可以通过键直接更新,也可以通过键删除某个键值对:

cs 复制代码
// 更新字典中某个键对应的值
keyValues[1] = 10; // 将键为 1 的值更新为 10

// 移除字典中的某个键值对
keyValues.Remove(2); // 移除键为 2 的键值对
遍历字典

Dictionary 提供了多种遍历方式,包括遍历键值对、键集合或值集合:

cs 复制代码
// 遍历字典中的所有键值对
foreach (KeyValuePair<int, int> kvp in keyValues)
{
    Console.WriteLine($"Key={kvp.Key}, Value={kvp.Value}");
}

// 或者只遍历键或值
foreach (int key in keyValues.Keys)
{
    Console.WriteLine($"Key={key}");
}

foreach (int value in keyValues.Values)
{
    Console.WriteLine($"Value={value}");
}
其他常用操作
  • 检查字典是否为空 :通过检查 Count 属性是否为 0 来判断字典是否为空。

  • 获取字典中元素的数量 :通过 Count 属性获取字典中的键值对数量。

cs 复制代码
// 检查字典是否为空
bool isEmpty = keyValues.Count == 0; // 返回 false

// 获取字典中元素的数量
int count = keyValues.Count; // 返回 2
示例代码完整版

以下是完整的代码示例,展示了上述所有操作:

cs 复制代码
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // 创建一个新的 Dictionary<int, int> 实例
        Dictionary<int, int> keyValues = new Dictionary<int, int>();

        // 添加键值对到字典中
        keyValues.Add(0, 100);
        keyValues.Add(1, 200);
        keyValues.Add(2, 300);

        // 通过键来访问值
        int value = keyValues[2];

        // 检查字典中是否包含某个键/某个值
        bool containKey = keyValues.ContainsKey(3);
        bool containValue = keyValues.ContainsValue(100);

        // 更新字典中某个键对应的值
        keyValues[1] = 10;

        // 移除字典中的某个键值对
        keyValues.Remove(2);

        // 遍历字典中的所有键值对
        foreach (KeyValuePair<int, int> kvp in keyValues)
        {
            Console.WriteLine($"Key={kvp.Key}, Value={kvp.Value}");
        }

        // 或者只遍历键或值
        foreach (int key in keyValues.Keys)
        {
            Console.WriteLine($"Key={key}");
        }

        foreach (int value in keyValues.Values)
        {
            Console.WriteLine($"Value={value}");
        }

        // 检查字典是否为空
        bool isEmpty = keyValues.Count == 0;

        // 获取字典中元素的数量
        int count = keyValues.Count;

        Console.ReadKey();
    }
}

通过以上代码,你可以快速掌握 Dictionary 的基本操作,从而在实际开发中高效地使用这一数据结构。

相关推荐
蹊黎5 小时前
C++中vector类的部分简单实现
开发语言·c++·visual studio
强哥聊算力7 小时前
《算力江湖·英伟达传奇》第七集:ChatGPT出现前夜,英伟达发生了什么?
服务器·人工智能·算法·ai·chatgpt·gpu算力
程序猿追11 小时前
kotlin-retry 接入鸿蒙后,怎样确认它真的会停止重试
开发语言·kotlin·harmonyos
我是人✓11 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
智能直播11 小时前
网络RTMP拉流不卡顿、声音不同步,一文讲透缓冲区、时间戳
开发语言·ffmpeg·php·音视频·视频编解码
Navigator_Z11 小时前
LeetCode //C - 1289. Minimum Falling Path Sum II
c语言·算法·leetcode
CCblandy11 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
墨云安全12 小时前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
摇滚侠12 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y12 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python