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日

相关文章

  • 浅谈C# 序列化与反序列化几种格式的转换

    下面是 “浅谈C# 序列化与反序列化几种格式的转换” 的完整攻略: 目录 什么是序列化与反序列化 为什么需要序列化与反序列化 C# 中实现序列化与反序列化的几种方式 XML 序列化与反序列化 JSON 序列化与反序列化 Binary 序列化与反序列化 示例说明 XML 序列化与反序列化示例 JSON 序列化与反序列化示例 什么是序列化与反序列化 序列化(Se…

    C# 2023年5月31日
    00
  • Unity实现物体跟随鼠标移动

    下面是Unity实现物体跟随鼠标移动的完整攻略。 实现方式 我们可以通过以下几个步骤来实现物体跟随鼠标的移动: 首先,需要给物体添加鼠标拖拽事件(需要在 Update 函数中检测鼠标位置)。 然后,在鼠标按下时,计算出鼠标在屏幕上的位置与物体在场景中的位置的距离差(即偏移量)。 在鼠标移动时,通过计算鼠标在屏幕上的位置与之前计算的偏移量,可以得出物体应该被移…

    C# 2023年6月3日
    00
  • asp.net 光棒效应实现代码

    ASP.NET 光棒效应(Nyan Cat Progress Bar)是一种在页面加载或异步请求时,使用CSS3动画实现的进度条。在本文中,我们将深入了解如何通过 ASP.NET 实现这种可爱的进度条效果。 实现步骤 第一步:创建结构 HTML中应该包括进度条的容器和过渡滑块,如下代码所示: <div> <div class="p…

    C# 2023年5月31日
    00
  • 关于C#连接SQL Server时提示用户登录失败的解决方法

    下面就是关于C#连接SQLServer时提示用户登录失败的解决方法的完整攻略: 1. 检查用户名和密码是否正确 第一步,你应该检查你提供的用户名和密码是否正确。在C#中,利用SqlConnectionStringBuilder类创建连接字符串,其中包括用户名和密码信息。示例代码如下: SqlConnectionStringBuilder builder = …

    C# 2023年5月14日
    00
  • C#使用 NAudio 实现音频可视化的方法

    C#使用 NAudio 实现音频可视化的方法 NAudio 是一款C#语言开发的音频处理库,可以帮助我们完成各种音频处理任务,包括音频的播放、录制、混音等操作。在本文中,我们将介绍如何使用 NAudio 实现音频可视化。 第一步:引入 NAudio 库 首先,我们需要在项目中引入 NAudio 库。在Visual Studio中,可以通过NuGet添加依赖项…

    C# 2023年6月7日
    00
  • C#实现自定义线程池实例代码

    下面是C#实现自定义线程池的攻略,包含了完整的代码实例和示例说明。 1. 概述 在C#中,线程池可以让我们创建、管理和重用线程,从而提高程序的性能和效率。然而,在某些情况下,自带的线程池可能无法满足我们的需求。为此,我们可以通过自定义线程池来实现更灵活、更高效的线程管理。本文将介绍如何使用C#实现自定义线程池。 2. 实现步骤 2.1 确定自定义线程池的基本…

    C# 2023年6月6日
    00
  • C# 如何调用SAP RFC

    调用SAP系统的功能,需要使用SAP提供的RFC接口,而C#语言则可以通过SAP .Net Connector来实现RFC调用操作。 以下是调用SAP RFC的详细攻略: 步骤一:安装SAP .Net Connector 访问SAP服务市场网站(https://support.sap.com)下载并安装SAP .Net Connector,这是使用C#调用R…

    C# 2023年6月6日
    00
  • C#实现谷歌翻译API示例代码

    下面我将详细讲解“C#实现谷歌翻译API示例代码”的完整攻略。 1. 确定使用的开发工具和翻译API 首先,我们需要确定使用的开发工具和翻译API。C#是微软公司推出的一种面向对象的编程语言,而谷歌翻译API是由谷歌公司提供的一种机器翻译服务。 2. 注册谷歌翻译API并获取API密钥 在使用谷歌翻译API之前,我们需要先注册一个开发者账号,并获取一个API…

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