網(wǎng)站首頁 編程語言 正文
本文主要介紹了C# 泛型字典 Dictionary的使用詳解,分享給大家,具體如下:
泛型最常見的用途是泛型集合,命名空間System.Collections.Generic 中包含了一些基于泛型的集合類,使用泛型集合類可以提供更高的類型安全性,還有更高的性能,避免了非泛型集合的重復(fù)的裝箱和拆箱。
很多非泛型集合類都有對應(yīng)的泛型集合類,我覺得最好還是養(yǎng)成用泛型集合類的好習(xí)慣,他不但性能上好而且 功能上要比非泛型類更齊全。下面是常用的非泛型集合類以及對應(yīng)的泛型集合類
非泛型集合類 | 泛型集合類 |
ArrayList | List<T> |
HashTable | DIctionary<T> |
Queue | Queue<T> |
Stack | Stack<T> |
SortedList | SortedList<T> |
我們用的比較多的非泛型集合類主要有? ArrayList類 和 HashTable類,其中當(dāng)我們經(jīng)常性的操作 數(shù)據(jù)信息時往往用HashTable 來存儲將要寫入到數(shù)據(jù)庫或者返回的信息,在這之間要不斷的進行類型的轉(zhuǎn)化,他給我們的幫助應(yīng)該是非常大的,如果我們操縱的數(shù)據(jù)類型相對確定的化? 用Dictionary<TKey,TValue>集合類來存儲數(shù)據(jù)就方便多了,例如我們需要在電子商務(wù)網(wǎng)站中存儲用戶的購物車信息( 商品名,對應(yīng)的商品個數(shù))時,完全可以用Dictionary<string,int > 來存儲購物車信息,而不需要任何的類型轉(zhuǎn)化。
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("--沒有數(shù)據(jù)");
return;
}
else
{
Console.WriteLine("--打印數(shù)據(jù)");
}
foreach (KeyValuePair<int, string> item in dict)
{
Console.WriteLine("Key: " + item.Key + " Value: " + item.Value);
}
}
static void Main(string[] args)
{
Console.WriteLine("Dictionary 的基本使用");
#region 本質(zhì)
// 擁有Hashtable的泛型
// 以鍵、值對的方式存儲 字典(鍵不能重復(fù))
#endregion
#region 申明
// 需要引用命名空間
// using System.Collections.Generic;
Dictionary<int, string> dict = new Dictionary<int, string>();
#endregion
#region 增
Console.WriteLine("-----------------------增");
// 鍵值 不能重復(fù)
dict.Add(1, "123");
dict.Add(2, "234");
dict.Add(3, "345");
//dict.Add(3, "345"); // 報錯
printDict(dict);
#endregion
#region 刪除
Console.WriteLine("-----------------------刪除");
// 只能通過鍵去刪除
// 刪除不存在的 鍵, 沒有反應(yīng)。
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.通過鍵找到 對應(yīng)的值
// 如果鍵不存在 報錯!
Console.WriteLine("查詢鍵2: " + dict[2]);
// Console.WriteLine(dict[4]); // 報錯
Console.WriteLine("查詢鍵1: " + dict[1]);
// 2.查詢是否存在
// 根據(jù)鍵查詢
if (dict.ContainsKey(1))
{
Console.WriteLine("查詢 存在鍵值 1的元素");
}
// 根據(jù)值檢測
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
相關(guān)推薦
- 2021-12-16 jquery+swiper組件實現(xiàn)時間軸滑動年份tab切換效果_jquery
- 2022-08-10 Qt實現(xiàn)簡易計時器的示例代碼_C 語言
- 2022-07-17 使用SQL語句實現(xiàn)查詢排序,順序和倒序_MsSql
- 2022-08-07 pd.DataFrame中的幾種索引變換的實現(xiàn)_python
- 2022-09-13 go語言中切片Slice與數(shù)組Array對比以及panic:?runtime?error:?inde
- 2022-12-22 Python?Flask框架實現(xiàn)Proteus仿真Arduino與網(wǎng)頁數(shù)據(jù)交互_python
- 2022-11-09 React?錯誤邊界Error?Boundary使用示例解析_React
- 2022-04-19 C語言位段(位域)機制結(jié)構(gòu)體的特殊實現(xiàn)及解析_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支