C# 泛型字典 Dictionary的使用详解
作者:廷益--飞鸟 发布时间:2022-01-19 23:48:17
标签:C#,泛型字典,Dictionary
本文主要介绍了C# 泛型字典 Dictionary的使用详解,分享给大家,具体如下:
泛型最常见的用途是泛型集合,命名空间System.Collections.Generic 中包含了一些基于泛型的集合类,使用泛型集合类可以提供更高的类型安全性,还有更高的性能,避免了非泛型集合的重复的装箱和拆箱。
很多非泛型集合类都有对应的泛型集合类,我觉得最好还是养成用泛型集合类的好习惯,他不但性能上好而且 功能上要比非泛型类更齐全。下面是常用的非泛型集合类以及对应的泛型集合类
非泛型集合类 | 泛型集合类 |
ArrayList | List<T> |
HashTable | DIctionary<T> |
Queue | Queue<T> |
Stack | Stack<T> |
SortedList | SortedList<T> |
我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashTable类,其中当我们经常性的操作 数据信息时往往用HashTable 来存储将要写入到数据库或者返回的信息,在这之间要不断的进行类型的转化,他给我们的帮助应该是非常大的,如果我们操纵的数据类型相对确定的化 用Dictionary<TKey,TValue>集合类来存储数据就方便多了,例如我们需要在电子商务网站中存储用户的购物车信息( 商品名,对应的商品个数)时,完全可以用Dictionary<string,int > 来存储购物车信息,而不需要任何的类型转化。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace L_Dictionary
{
class Program
{
static void printDict(Dictionary<int, string> dict)
{
if(dict.Count == 0)
{
Console.WriteLine("--没有数据");
return;
}
else
{
Console.WriteLine("--打印数据");
}
foreach (KeyValuePair<int, string> item in dict)
{
Console.WriteLine("Key: " + item.Key + " Value: " + item.Value);
}
}
static void Main(string[] args)
{
Console.WriteLine("Dictionary 的基本使用");
#region 本质
// 拥有Hashtable的泛型
// 以键、值对的方式存储 字典(键不能重复)
#endregion
#region 申明
// 需要引用命名空间
// using System.Collections.Generic;
Dictionary<int, string> dict = new Dictionary<int, string>();
#endregion
#region 增
Console.WriteLine("-----------------------增");
// 键值 不能重复
dict.Add(1, "123");
dict.Add(2, "234");
dict.Add(3, "345");
//dict.Add(3, "345"); // 报错
printDict(dict);
#endregion
#region 删除
Console.WriteLine("-----------------------删除");
// 只能通过键去删除
// 删除不存在的 键, 没有反应。
Console.WriteLine("删除键 --- 1");
dict.Remove(1);
Console.WriteLine("删除键 --- 4");
dict.Remove(4);
printDict(dict);
// 清空
Console.WriteLine("清空 ----");
dict.Clear();
printDict(dict);
dict.Add(1, "123");
dict.Add(2, "234");
dict.Add(3, "345");
#endregion
#region 查询
Console.WriteLine("-----------------------查询");
// 1.通过键找到 对应的值
// 如果键不存在 报错!
Console.WriteLine("查询键2: " + dict[2]);
// Console.WriteLine(dict[4]); // 报错
Console.WriteLine("查询键1: " + dict[1]);
// 2.查询是否存在
// 根据键查询
if (dict.ContainsKey(1))
{
Console.WriteLine("查询 存在键值 1的元素");
}
// 根据值检测
if (dict.ContainsValue("345"))
{
Console.WriteLine("查询 存在\"345 \"值的元素");
}
#endregion
#region 改
Console.WriteLine("-----------------------改");
Console.WriteLine("修改 键=1 元素 值= \"666\" ");
dict[1] = "666";
printDict(dict);
#endregion
#region 遍历
Console.WriteLine("-----------------------遍历");
// 1.遍历所有键
Console.WriteLine("---遍历键");
foreach (int item in dict.Keys)
{
Console.WriteLine(item);
}
// 2.遍历所有值
Console.WriteLine("---遍历所有值");
foreach (string item in dict.Values)
{
Console.WriteLine(item);
}
// 3.遍历所有键值
Console.WriteLine("---遍历所有键值");
foreach (KeyValuePair<int, string> item in dict)
{
Console.WriteLine("Key: " + item.Key + " Value: " + item.Value);
}
#endregion
Console.ReadLine();
}
}
}
来源:https://blog.csdn.net/weixin_45875105/article/details/124789800


猜你喜欢
- iText下载页面: http://sourceforge.net/projects/itext/files/1.创建简单的PDF文件pac
- 在Android开发者网站的 "外部存储技术信息"文档中描述道 : WRITE_EXTERNAL_STORAGE只为设备
- 淘宝物流信息TimeLine的制作方法:仿照的TimeLine效果图: 代码实现:package com.zms.timelineview;
- 目录类划分时关于内聚性的问题静态类的设计高内聚类的设计附:面向过程编程中模块的内聚性偶然内聚或巧合内聚(Coincidental)逻辑内聚(
- 将下列字符串,依照|拆分成数组:String numbers = "1|2|3|4|5";使用split拆分String
- 1.什么是责任链模式当一个请求可能需要多个对象中的某个进行处理时,将这些对象连成一条链,并沿者这条链传递该请求,知道有一个对象处理它为止。这
- 如下所示:if(File.Exists(path)){// 是文件}else if(Directory.Exists(path)){// 是
- //初始化propertiesProperties pro = new Properties();try { &nbs
- Comparable 简介Comparable 是排序接口。若一个类实现了Comparable接口,就意味着“该类支持排序”。
- 效果展示人脸支付效果视频密码框输入支付效果视频因为密码支付时会调起系统安全键盘,开启自动保护功能,防止泄露,会导致输入密码时录屏黑屏,故使用
- 1、HttpClient:代码复杂,还得操心资源回收等。代码很复杂,冗余代码多,不建议直接使用。2、RestTemplate: 是 Spri
- 1.基本思路①.创建已加锁应用的数据库(字段:_id,packagename),如果应用已加锁,将加锁应用的包名维护到数据库中②.已加锁+未
- SpringBoot停止启动时测试检查rabbitmq问题在Springboot项目中配置rabbitmq后,总是在每次启动时自动测试MQ的
- 在本文中,对比了常见的几种反射的方法,介绍了它们分别应该如何使用,每种的简易度和灵活度,然后做了基准测试,一起看看这之间的性能差距。按照使用
- 功能实现:1、图片加载类ImageLoader实现:1)用阻塞队列存储要图片:BlockingQueue images = new Arra
- 不小心将.idea文件提交后无法删除1、同步git最新代码,将.idea文件同步下来如果同步不下来,看看是不是在同步的时候与本地文件产生了冲
- java 避免出现NullPointerException(空指针)的方法总结Java应用中抛出的空指针异常是解决空指针的最好方式,也是写出
- 1.挂起函数挂起函数在Kotlin协程中是一个比较重要的知识点,协程的非阻塞式、Channel、Flow等API都对它有充分的理解才能在学习
- /// <summary>/// 生成二维码/// </summary>/// <param name=&qu
- 有经验的程序员应该都见过,一个方法坐拥几十上百个参数。方法为何要有参数?因为不同方法间需共享信息。但方法间共享信息的方式不止一种,除了参数列