C#中的Dictionary是一種特殊的數(shù)據(jù)集合。因為它由鍵值,和數(shù)值組成,并且一一對應,通過鍵值我們就可以查詢到對應的數(shù)值,就好像查字典一樣,故而我們會形象地稱呼它為“字典”。據(jù)于它們這種特殊地結構,C#定義了它很多地屬性與方法,在實際應用中非常實用。
一、結構
Dictionary的結構是這樣的:Dictionary<[key],[value]>,所引用的命名空間是:System.Collections.Generic。
二、定義
關于Dictionary的定義,它必須遵循一下規(guī)則:
1、鍵值(key)與(value),一一映射,共同關聯(lián)組成一個鍵值對
2、任何的鍵都是唯一的
3、鍵不能為空(若值為引用類型,則可以為空)
4、key和value可以是任意類型
三、創(chuàng)建與初始化
Dictionary<[key],[value]> mDic = new Dictionary<[key],[value]>();
例:Dictionary<int,int> mDic = new Dictionary<int,int>();
四、使用技巧
1、添加元素:Add
例:
mDic.Add(1,1);
mDic.Add(2,1);
mDic.Add(3,2);
2、刪除元素:Remove
例:
mDic.Remove(1); //移除指定鍵的鍵值
3、查詢字典中是否包含指定的鍵:ContainsKey
例:
if(mDic.ContainsKey(1))? //先判斷是否存在這樣的鍵
{? ? ? ?
?Console.WriteLine(“字典中含有這個鍵”);
}
4、通過key獲取對應的值:Dictionary[key]
例:
if(mDic.ContainsKey(1))? //先判斷是否存在這樣的鍵
{? ? ? ?
?Console.WriteLine(mDic[1]);
}
5、遍歷鍵值對:KeyValuePair
例:
foreach(KeyValuePair<int,int> temp in mDic)
{
Console.WriteLine("Key = {0}, Value = {1}",temp.Key, temp.Value);
}
6、遍歷所有鍵與所有鍵值:Keys(Dictionary<T,T>.KeyCollection),Values(Dictionary<T,T>.ValueCollection)
foreach(var key in mDic.Keys)
{
Console.WriteLine(key); //獲取所有鍵
}
foreach(var value in mDic.Values)
{
Console.WriteLine(value); //獲取所有鍵值
}
7、獲取與指定的鍵相關聯(lián)的值:?public bool TryGetValue(TKey key, out TValue value);
例:
int val = null;
mDic.TyrGetValue(1,out val);
Console.WriteLine(val);
8、對Dictionary進行排序的一個方法
例:
mDic.Add(1,1);
mDic.Add(3,3);
mDic.Add(5,5);
mDic.Add(6,6);
mDic.Add(4,4);
mDic.Add(2,2);
var result = from pair in mDic orderby pair.Key select pair;
foreach (KeyValuePair<int, int> pair in result)
{
Console.WriteLine("Key:{0}, Value:{1}", pair.Key, pair.Value);
}
//Key:1, Value:1
//Key:2, Value:2
//Key:3, Value:3
//Key:4, Value:4
//Key:5, Value:5
//Key:6, Value:6
9、對Dictionary求交集、差集、并集
例:
Dictionary<int, int> Dic1 = new Dictionary<int, int>();
for (int i = 0; i < 10; i++)
{
Dic1.Add(i, i);
}
Dictionary<int, int> Dic2 = new Dictionary<int, int>();
for (int i = 5; i < 15; i++)
{
Dic2.Add(i, i);
}
//求交集
var jj = Dic1.Keys.Intersect(Dic2.Keys);
foreach (var i in jj)
{
Console.Write(i + " ");
}
//求差集
var cj = Dic1.Keys.Except(Dic2.Keys);
foreach (var i in cj)
{
Console.Write(i + " ");
}
//求并集
var bj = Dic1.Keys.Union(Dic2.Keys);
foreach (var i in bj)
{
Console.Write(i + " ");
}
五、其它常用屬性與方法的說明
Comparer:?????????? 獲取用于確定字典中的鍵是否相等的 IEqualityComparer。
? Count:????????????????? 獲取包含在 Dictionary中的鍵/值對的數(shù)目。
? Item:??????????????????? 獲取或設置與指定的鍵相關聯(lián)的值。
??Keys:?????????????????? 獲取包含 Dictionary中的鍵的集合。
? Values:??????????????? 獲取包含 Dictionary中的值的集合。
? Add:??????????????????? 將指定的鍵和值添加到字典中。
? Clear:????????? ?????? ?從 Dictionary中移除所有的鍵和值。
? ContainsKey:????? 確定 Dictionary是否包含指定的鍵。
? ContainsValue:?? 確定 Dictionary是否包含特定值。?????????????
??GetEnumerator:? 返回循環(huán)訪問 Dictionary的枚舉數(shù)。
? GetType:?????????????獲取當前實例的 Type。 (從 Object 繼承。)
? Remove:?????????????從 Dictionary中移除所指定的鍵的值。
? ToString:?????????????返回表示當前 Object的 String。 (從 Object 繼承。)文章來源:http://www.zghlxwxcb.cn/news/detail-546830.html
? TryGetValue:????? 獲取與指定的鍵相關聯(lián)的值。文章來源地址http://www.zghlxwxcb.cn/news/detail-546830.html
到了這里,關于C#“字典”Dictionary的用法的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!