Hashtable, ArrayList, List, Dictionary学习
生活随笔
收集整理的這篇文章主要介紹了
Hashtable, ArrayList, List, Dictionary学习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Hashtable用法
在.NET Framework中,Hashtable是System.Collections命名空間提供的一個容器,用于處理和表現類似key/value的鍵值對,其中key通常可用來快速查找,同時key是區分大小寫;value用于存儲對應于key的值。Hashtable中key/value鍵值對均為object類型,所以Hashtable可以支持任何類型的key/value鍵值對.。
在哈希表中添加一個key/value鍵值對:HashtableObject.Add(key,value);
在哈希表中去除某個key/value鍵值對:HashtableObject.Remove(key);
從哈希表中移除所有元素: HashtableObject.Clear();
判斷哈希表是否包含特定鍵key: HashtableObject.Contains(key);
?? Hashtable ht = new Hashtable();
?? ht.Add("a", 123);
?? ht.Add("b", 456);
?? // 遍歷哈希表需要用到DictionaryEntry Object
???? foreach (DictionaryEntry de in ht)
??????{
??????????MessageBox.Show(de.Key.ToString() + "?? " + de.Value.ToString());
??????}
?? //對哈希表進行排序
????ArrayList akeys = new ArrayList(ht.Keys); //別忘了導入System.Collections
????akeys.Sort(); //按字母順序進行排序
????foreach (string skey in akeys)
??????{
??????????MessageBox.Show(skey + ":");
??????????MessageBox.Show(ht[skey].ToString());//排序后輸出
??????}
ArrayList用法
private static void AddToList(ArrayList list, string p)
????????{
????????????if (list.Contains(p) == false)
????????????????list.Add(p);
????????}
????????private void button1_Click(object sender, EventArgs e)
????????{
????????????ArrayList list = new ArrayList();
????????????AddToList(list, "Table1");
????????????AddToList(list, "Table4");
????????????AddToList(list, "Table1");
????????????AddToList(list, "Table3");
????????????AddToList(list, "Table2");
????????????AddToList(list, "Table2");
????????????foreach (string s in list)
????????????{
????????????????MessageBox.Show(s);
????????????}
?????? }
List
List<string> listStr = new List<string>();
????????????listStr.Add("123");
????????????listStr.Add("456");
????????????listStr.Add("789");
???????? MessageBox.Show(listStr[2]);//”789”
Dictionary
泛型的優點(C# 編程指南)
C# 中典型的范型結構除了熟悉的 IList , HashTable之外還有一個并不常見的Dictionary集合。
相比較而言,Dictionary的性能是最好的,也屬于輕便型的集合。效率要大于HashTable,其主要原因是Dictionary支持強類型聲明的。
在公共語言運行庫和 C# 語言的早期版本中,通用化是通過在類型與通用基類型 Object 之間進行強制轉換來實現的,泛型提供了針對這種限制的解決方案。通過創建泛型類,您可以創建一個在編譯時類型安全的集合。
添加到 ArrayList 中的任何引用或值類型都將隱式地向上強制轉換為 Object。如果項是值類型,則必須在將其添加到列表中時進行裝箱操作,在檢索時進行取消裝箱操作。強制轉換以及裝箱和取消裝箱操作都會降低性能;在必須對大型集合進行循環訪問的情況下,裝箱和取消裝箱的影響非常明顯。
對于客戶端代碼,與 ArrayList 相比,使用 List<T> 時添加的唯一語法是聲明和實例化中的類型參數。雖然這稍微增加了些編碼的復雜性,但好處是您可以創建一個比 ArrayList 更安全并且速度更快的列表,特別適用于列表項是值類型的情況。
Dictionary 泛型類提供了從一組鍵到一組值的映射。字典中的每個添加項都由一個值及其相關聯的鍵組成。通過鍵來檢索值的速度是非常快的,接近于 O(1),這是因為 Dictionary 類是作為一個哈希表來實現的。
1、
Dictionary<int, string> fruit = new Dictionary<int, string>();
???????? //加入重復鍵會引發異常
???????? fruit.Add(1, "蘋果");
???????? fruit.Add(2, "桔子");
???????? fruit.Add(3, "香蕉");
???????? fruit.Add(4, "菠蘿");
???????? //因為引入了泛型,所以鍵取出后不需要進行Object到int的轉換,值的集合也一樣
???????? foreach (int i in fruit.Keys)
?????????? {
?????????????? MessageBox.Show("鍵是:"+i.ToString()+ "值是:"+ fruit);
????}
2、
Dictionary<string , string> fruit = new Dictionary<string, string>();
????????????//加入重復鍵會引發異常
????????????fruit.Add("1", "蘋果");
????????????fruit.Add("2", "桔子");
????????????fruit.Add("3", "香蕉");
????????????fruit.Add("4", "菠蘿");
????????????//因為引入了泛型,所以鍵取出后不需要進行Object到int的轉換,值的集合也一樣
????????????foreach (string i in fruit.Keys)
????????????{
????????????????MessageBox.Show("鍵是:"+i.ToString()+ "值是:"+ fruit);
????????????}
在.NET Framework中,Hashtable是System.Collections命名空間提供的一個容器,用于處理和表現類似key/value的鍵值對,其中key通常可用來快速查找,同時key是區分大小寫;value用于存儲對應于key的值。Hashtable中key/value鍵值對均為object類型,所以Hashtable可以支持任何類型的key/value鍵值對.。
在哈希表中添加一個key/value鍵值對:HashtableObject.Add(key,value);
在哈希表中去除某個key/value鍵值對:HashtableObject.Remove(key);
從哈希表中移除所有元素: HashtableObject.Clear();
判斷哈希表是否包含特定鍵key: HashtableObject.Contains(key);
?? Hashtable ht = new Hashtable();
?? ht.Add("a", 123);
?? ht.Add("b", 456);
?? // 遍歷哈希表需要用到DictionaryEntry Object
???? foreach (DictionaryEntry de in ht)
??????{
??????????MessageBox.Show(de.Key.ToString() + "?? " + de.Value.ToString());
??????}
?? //對哈希表進行排序
????ArrayList akeys = new ArrayList(ht.Keys); //別忘了導入System.Collections
????akeys.Sort(); //按字母順序進行排序
????foreach (string skey in akeys)
??????{
??????????MessageBox.Show(skey + ":");
??????????MessageBox.Show(ht[skey].ToString());//排序后輸出
??????}
ArrayList用法
private static void AddToList(ArrayList list, string p)
????????{
????????????if (list.Contains(p) == false)
????????????????list.Add(p);
????????}
????????private void button1_Click(object sender, EventArgs e)
????????{
????????????ArrayList list = new ArrayList();
????????????AddToList(list, "Table1");
????????????AddToList(list, "Table4");
????????????AddToList(list, "Table1");
????????????AddToList(list, "Table3");
????????????AddToList(list, "Table2");
????????????AddToList(list, "Table2");
????????????foreach (string s in list)
????????????{
????????????????MessageBox.Show(s);
????????????}
?????? }
List
List<string> listStr = new List<string>();
????????????listStr.Add("123");
????????????listStr.Add("456");
????????????listStr.Add("789");
???????? MessageBox.Show(listStr[2]);//”789”
Dictionary
泛型的優點(C# 編程指南)
C# 中典型的范型結構除了熟悉的 IList , HashTable之外還有一個并不常見的Dictionary集合。
相比較而言,Dictionary的性能是最好的,也屬于輕便型的集合。效率要大于HashTable,其主要原因是Dictionary支持強類型聲明的。
在公共語言運行庫和 C# 語言的早期版本中,通用化是通過在類型與通用基類型 Object 之間進行強制轉換來實現的,泛型提供了針對這種限制的解決方案。通過創建泛型類,您可以創建一個在編譯時類型安全的集合。
添加到 ArrayList 中的任何引用或值類型都將隱式地向上強制轉換為 Object。如果項是值類型,則必須在將其添加到列表中時進行裝箱操作,在檢索時進行取消裝箱操作。強制轉換以及裝箱和取消裝箱操作都會降低性能;在必須對大型集合進行循環訪問的情況下,裝箱和取消裝箱的影響非常明顯。
對于客戶端代碼,與 ArrayList 相比,使用 List<T> 時添加的唯一語法是聲明和實例化中的類型參數。雖然這稍微增加了些編碼的復雜性,但好處是您可以創建一個比 ArrayList 更安全并且速度更快的列表,特別適用于列表項是值類型的情況。
Dictionary 泛型類提供了從一組鍵到一組值的映射。字典中的每個添加項都由一個值及其相關聯的鍵組成。通過鍵來檢索值的速度是非常快的,接近于 O(1),這是因為 Dictionary 類是作為一個哈希表來實現的。
1、
Dictionary<int, string> fruit = new Dictionary<int, string>();
???????? //加入重復鍵會引發異常
???????? fruit.Add(1, "蘋果");
???????? fruit.Add(2, "桔子");
???????? fruit.Add(3, "香蕉");
???????? fruit.Add(4, "菠蘿");
???????? //因為引入了泛型,所以鍵取出后不需要進行Object到int的轉換,值的集合也一樣
???????? foreach (int i in fruit.Keys)
?????????? {
?????????????? MessageBox.Show("鍵是:"+i.ToString()+ "值是:"+ fruit);
????}
2、
Dictionary<string , string> fruit = new Dictionary<string, string>();
????????????//加入重復鍵會引發異常
????????????fruit.Add("1", "蘋果");
????????????fruit.Add("2", "桔子");
????????????fruit.Add("3", "香蕉");
????????????fruit.Add("4", "菠蘿");
????????????//因為引入了泛型,所以鍵取出后不需要進行Object到int的轉換,值的集合也一樣
????????????foreach (string i in fruit.Keys)
????????????{
????????????????MessageBox.Show("鍵是:"+i.ToString()+ "值是:"+ fruit);
????????????}
轉載于:https://www.cnblogs.com/silverLee/archive/2009/11/05/1596778.html
總結
以上是生活随笔為你收集整理的Hashtable, ArrayList, List, Dictionary学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于“组织级”的思考
- 下一篇: c# 删除文件