[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