[C#.NET][VB.NET] 一般集合 OrderedDictionary 集合類別簡介

[C#.NET][VB.NET] 一般集合 - OrderedDictionary 集合 類別簡介 
OrderedDictionary 類別是特殊的集合,彌補標準字典的限制,它位於 System.Collections.Specialized 命名空間 裡; 

其類別特性如下: 

1.具有Hashtable集合的特性,但多了一些Hashtable沒有的方法。

續上一篇[C#.NET][VB.NET] 一般 / 泛型 Generic Collection 集合型別介紹

OrderedDictionary 類別是特殊的集合,彌補標準字典的限制,它位於 System.Collections.Specialized 命名空間 裡;

其類別特性如下:

1.具有 Hashtable 集合的特性,但多了一些 Hashtable 沒有的方法。

方法名稱說明
Insert使用指定的索引鍵和值,將新元素插入 OrderedDictionary 集合中指定的索引處。
RemoveAt從 OrderedDictionary 集合移除指定之索引處的元素。

2.加入集合中的內容會按照加入的順序排列,這點就跟 Hashtable不一樣。[C#.NET][VB.NET] 一般集合 – Hashtable 集合 類別 建立查詢表 / 搜尋關鍵字

3.使用 Hashtable 類別時需要有索引鍵(Key)與值(Value),但要注意的是 索引鍵不能重複。

4.需使用 DictionaryEntry 結構來取得 Hashtable 的索引鍵(Key)與內容(Value)。

 

如何使用OrderedDictionary

1.引用 OrderedDictionary 類別。

OrderedDictionary od = new OrderedDictionary();

2.加入索引鍵(Key)及內容(Value)。

od.Add(1, "one"); od.Add("2", "two"); od.Add("0", "zero");

 

插入

od.Insert(0, 3, "three");

 

移除

od.RemoveAt(2);

 

如何列出OrderedDictionary 集合

foreach (DictionaryEntry Table in od) {     this.listBox1.Items.Add("索引鍵: " + Table.Key + " 值 :" + Table.Value); }

 

如何判斷OrderedDictionary 索引鍵是否存在

string str = "0"; if (od.Contains(str)) {     Console.WriteLine("索引鍵:{0} 存在", str); } else {     Console.WriteLine("索引鍵:{0} 不存在", str); }

這範例只是要展現操作集合的結果,所以感覺有點"脫屎連"

 

C#完整範例

private void button1_Click(object sender, EventArgs e) 
{     
     //1.引用OrderedDictionary類別
     OrderedDictionary od = new OrderedDictionary();
     //2.加入索引鍵(Key)及內容(Value)     
     od.Add(1, "one");     
     od.Add("2", "two");     
     od.Add("0", "zero");     
     //列出物件所包含的索引鍵及內容     
     this.listBox1.Items.Add("集合建立");     
     foreach (DictionaryEntry Table in od)     
     {         
     	//Console.WriteLine("索引鍵:{0},值:{1}", Table.Key, Table.Value);         
     	this.listBox1.Items.Add("索引鍵: " + Table.Key + " 值 :" + Table.Value);     
     }     
     this.listBox1.Items.Add("=============================");     
     //插入     
     od.Insert(0, 3, "three");     
     this.listBox1.Items.Add("插入內容");     
     foreach (DictionaryEntry Table in od)     
     {         
     	this.listBox1.Items.Add("索引鍵: " + Table.Key + " 值 :" + Table.Value);     
     }     
     this.listBox1.Items.Add("=============================");     
     //刪除     
     od.RemoveAt(2);     
     this.listBox1.Items.Add("刪除內容");     
     foreach (DictionaryEntry Table in od)     
     {         
     	this.listBox1.Items.Add("索引鍵: " + Table.Key + " 值 :" + Table.Value);     
     }     
     this.listBox1.Items.Add("=============================");     
     //取代     
     od["0"] = "zero";       
     foreach (object Table in od.Keys)     
     {         
     	Console.WriteLine(Table.ToString());     
     }     
     	foreach (object Table in od.Values)     
     {         
     	Console.WriteLine(Table.ToString());     
     }     
     //判斷索引鍵是否存在     
     string str = "0";     
     if (od.Contains(str))     
     {         
     	Console.WriteLine("索引鍵:{0} 存在", str);     
     }     
     else     
     {         
     	Console.WriteLine("索引鍵:{0} 不存在", str);     
     } 
}

 

VB完整範例

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click     
	'1.引用OrderedDictionary類別     
	Dim od As New OrderedDictionary()     
	'2.加入索引鍵(Key)及內容(Value)     
	od.Add(1, "one")     
	od.Add("2", "two")     
	od.Add("0", "zero")     
	'列出物件所包含的索引鍵及內容     
	Me.ListBox1.Items.Add("集合建立")     
	For Each Table As DictionaryEntry In od         
		'Console.WriteLine("索引鍵:{0},值:{1}", Table.Key, Table.Value);         
		Me.ListBox1.Items.Add(("索引鍵: " & Table.Key & " 值 :") + Table.Value)     
	Next     
	Me.ListBox1.Items.Add("=============================")     
	'插入     
	od.Insert(0, 3, "three")     
	Me.ListBox1.Items.Add("插入內容")     
	For Each Table As DictionaryEntry In od         
		Me.ListBox1.Items.Add(("索引鍵: " & Table.Key & " 值 :") + Table.Value)     
	Next     
	Me.ListBox1.Items.Add("=============================")     
	'刪除     
	od.RemoveAt(2)     
	Me.ListBox1.Items.Add("刪除內容")     
	For Each Table As DictionaryEntry In od         
		Me.ListBox1.Items.Add(("索引鍵: " & Table.Key & " 值 :") + Table.Value)     
	Next     
	Me.ListBox1.Items.Add("=============================")     
	'取代     
	od("0") = "zero"       
	For Each Table As Object In od.Keys         
		Console.WriteLine(Table.ToString())     
	Next     
	For Each Table As Object In od.Values         
		Console.WriteLine(Table.ToString())     
	Next     
	'判斷索引鍵是否存在     
	Dim str As String = "0"     
	If od.Contains(str) Then         
		Console.WriteLine("索引鍵:{0} 存在", str)     
	Else         
		Console.WriteLine("索引鍵:{0} 不存在", str)     
	End If   
End Sub

 

C#、VB範例下載: OrderedDictionary.rar

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo