C# Dictionary和SortedDictionary的简介

C# Dictionary和SortedDictionary的简介

C#中的Dictionary和SortedDictionary都是用来存储键值对的数据结构,不同之处在于它们对数据的存储方式不同。

Dictionary

Dictionary是一个散列表,使用哈希表存储键值对。在Dictionary中,键值对的键必须是唯一的,而值可以重复。下面是一个创建Dictionary的示例:

Dictionary<string, int> dict = new Dictionary<string, int>();
dict.Add("Tom", 18);
dict.Add("Jerry", 20);

通过Add方法往Dictionary中添加元素,第一个参数是键,第二个参数是值。Dictionary可以通过键来快速查找值:

int age = dict["Tom"];

SortedDictionary

SortedDictionary也是一个键值对的数据结构,和Dictionary不同的是,SortedDictionary是有序的。SortedDictionary内部使用红黑树来实现,因此访问它的元素时有着更好的性能表现。下面是一个创建SortedDictionary的示例:

SortedDictionary<string, int> dict = new SortedDictionary<string, int>();
dict.Add("Tom", 18);
dict.Add("Jerry", 20);

通过Add方法往SortedDictionary中添加元素,第一个参数是键,第二个参数是值。SortedDictionary内部会自动根据键对元素进行排序,因此可以通过遍历SortedDictionary来得到排序后的结果:

foreach (KeyValuePair<string, int> pair in dict)
{
    Console.WriteLine(pair.Key + ": " + pair.Value);
}

示例

示例1:使用Dictionary统计单词出现的次数

以下示例演示了如何使用Dictionary统计字符串中每个单词出现的次数:

string str = "hello world, hello everyone, how are you?";
Dictionary<string, int> dict = new Dictionary<string, int>();
string[] words = str.Split(' ', ',', '?', '!');
foreach (string word in words)
{
    if (dict.ContainsKey(word))
    {
        dict[word]++;
    }
    else
    {
        dict[word] = 1;
    }
}
foreach (KeyValuePair<string, int> pair in dict)
{
    Console.WriteLine(pair.Key + ": " + pair.Value);
}

在此示例中,我们首先将字符串str通过Split方法切分成单词数组,然后通过循环遍历每个单词。在每个单词中,我们判断它是否已经在Dictionary中出现过,如果出现过就将值加1,如果没有出现过就将其加入到Dictionary中。

示例2:使用SortedDictionary查找最接近的日期

以下示例演示了如何使用SortedDictionary查找距离指定日期最近的日期:

DateTime today = DateTime.Today;
SortedDictionary<TimeSpan, DateTime> dict = new SortedDictionary<TimeSpan, DateTime>();
dict.Add(TimeSpan.Zero, today);
dict.Add(TimeSpan.FromDays(2), today.AddDays(2));
dict.Add(TimeSpan.FromDays(-1), today.AddDays(-1));
TimeSpan minDiff = TimeSpan.MaxValue;
DateTime closestDate = DateTime.MinValue;
foreach (KeyValuePair<TimeSpan, DateTime> pair in dict)
{
    TimeSpan diff = pair.Value - today;
    if (diff < TimeSpan.Zero) diff = diff.Negate();
    if (diff < minDiff)
    {
        minDiff = diff;
        closestDate = pair.Value;
    }
}
Console.WriteLine("Closest date: " + closestDate);

在此示例中,我们首先创建了一个SortedDictionary,用来存储日期和它与今天的时间差。然后我们遍历SortedDictionary,计算字典中每个日期与今天的时间差,并找到距离今天最近的日期。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# Dictionary和SortedDictionary的简介 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • Entity Framework使用Code First的实体继承模式

    下面我来详细讲解“Entity Framework使用Code First的实体继承模式”的完整攻略。 1. 实体继承模式概述 实体继承模式是指,在EF中,可以让一个实体从另一个实体继承,而不是从零开始创建一个新实体。这个新实体将继承另一个实体的所有属性、方法和字段,可以重写父实体的属性和方法,从而实现对实体模型的复用。 实体继承的方式有三种:表继承、TPH…

    C# 2023年6月3日
    00
  • C#中后台post请求常用的两种方式总结

    C#中后台post请求常用的两种方式总结 在C#后台开发中,我们常常需要使用HTTP请求来和其它服务器进行通信。使用POST请求可以在请求体中携带参数,更适合传输大量数据,因此本文将主要介绍C#中后台post请求常用的两种方式:HttpClient和WebRequest。 HttpClient HttpClient是一个相对简单易用的类库。它的作用是向指定U…

    C# 2023年5月31日
    00
  • C#9.0主要特性的一些想法

    C# 9.0主要特性的一些想法 C# 9.0是Microsoft发布的最新版本的C#语言。本文将重点讲解C# 9.0的主要特性,包括以下内容: 改进模式匹配 新的init-only属性 支持 Lambda 计算式中的 Discards 函数成员中现在可以包含参数 null 性 注释 函数和 ltc 参数中支持 调用链 改进模式匹配 模式匹配是C#的一个非常强…

    C# 2023年6月1日
    00
  • C#利用VS中插件打包并发布winfrom程序

    下面我将为您详细讲解“C#利用VS中插件打包并发布winfrom程序”的完整攻略。 1. 安装插件 首先,您需要在Visual Studio中安装一个名为“Visual Studio Installer Projects”的插件。该插件可在Visual Studio扩展市场中免费下载。安装完成后,重启Visual Studio以使插件生效。 2. 创建安装包…

    C# 2023年5月15日
    00
  • C# 模式匹配完全指南

    C# 模式匹配完全指南 什么是 C# 模式匹配? C# 7.0 开始加入了一种新的特性,那就是模式匹配(Pattern Matching)。模式匹配的主要作用是用来匹配各种数据类型,从而简化我们的程序设计,并且让代码更加简洁易懂。 C# 模式匹配的类型 常量模式(Constant Patterns) 次类型模式(Type Patterns) 变量模式(Var…

    C# 2023年5月15日
    00
  • ASP.NET操作各类时间段获取方法汇总

    ASP.NET操作各类时间段获取方法汇总 在ASP.NET中,我们常常需要获取各类时间段,例如获取当前时间、获取某个日期的年月日信息、获取指定时间段的日期列表。本文将系统介绍ASP.NET操作各类时间段获取方法及其使用场景,包括以下几个方面: 获取当前时间 获取当前日期的年月日信息 获取指定时间段的日期列表 1. 获取当前时间 要获取当前时间,我们可以使用 …

    C# 2023年6月1日
    00
  • C#实现二叉排序树代码实例

    下面我将详细讲解如何用C#语言实现一个二叉排序树以及代码实现的具体步骤。 什么是二叉排序树? 二叉排序树(Binary Search Tree)是一种二叉树,其中树的每个节点都包含一个关键字,左子树的所有节点的关键字小于当前节点的关键字,而右子树的所有节点的关键字大于当前节点的关键字。 实现步骤 下面是实现二叉排序树的具体步骤: 创建一个树节点类,定义节点的…

    C# 2023年6月6日
    00
  • ASP.NET Core应用程序配置文件AppSetting.json

    ASP.NET Core应用程序配置文件AppSetting.json的完整攻略 在ASP.NET Core应用程序中,AppSetting.json是一个重要的配置文件,它包含应用程序的各种设置和选项。在本攻略中,我们将详细讲解如何使用AppSetting.json文件来配置ASP.NET Core应用程序,并提供两个示例说明。 步骤一:创建AppSett…

    C# 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部