C#集合类:动态数组、队列、栈、哈希表、字典(转)

本文深入探讨了信息技术领域的核心概念,包括动态数组、队列、栈、哈希表等数据结构的应用,以及如何在实际场景中高效使用它们。同时,文章介绍了泛型集合、SortedList、Dictionary等高级集合类,提供了丰富的示例代码,帮助开发者理解和实现复杂的数据操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、动态数组:ArrayList

主要方法:Add、AddRange、RemoveAt、Remove

2、队列:Queue

主要方法:Enqueue入队列、Dequeue出队列、Peek返回Queue开始处的对象但不删除

3、栈:Stack 后进先出

主要方法:Push方法入栈,Pop方法出栈、Peek弹出最后一项不删除

4、哈希表:HashTable 通过键值对更快捷的查找元素。键不能为空引用,但值可以

示例:Hashtable ht=new Hashtable(); //创建一个Hashtable实例 
        ht.Add("E","e");//添加key/value键值对   

        ht.Add("A","a"); 
        ht.Add("C","c"); 

    if(ht.Contains("E")) //判断哈希表是否包含特定键,其返回值为true或false 
         ht.Remove("E");

   ht.Clear();//清空

   //遍历哈希表:

   for(DictionaryEntry de in ht)

  {

  Console.write(de.Key);

  Console.write(de.Value);

  }  

     //对哈希表进行排序

   ArrayList list=new ArrayList(ht.Keys);

   list.Sort();

   foreach(string s in list)

  {

  Console.Write(ht[s]);  

  }

5、SortedList表示键/值对的集合:区别于HashTable之处是SortedList中的Key数组是排好序的

6、Dictionary泛型集合

命名空间System.Collections.Generic

非泛型集合对应的泛型集合类:

 

非泛型集合类     泛型集合类

 

ArrayList         List<T>

 

HashTable       Dictionary<T>

 

Queue             Queue<T>

 

Stack              Stack<T>

SortedList       SortedList<T>

示例:

  Dictionary<string, string> myDic =new Dictionary<string, string>(); 
     myDic.Add("aaa", "111"); 
     myDic.Add("bbb", "222"); 
     myDic.Add("ccc", "333"); 
     myDic.Add("ddd", "444"); 
     //如果添加已经存在的键,add方法会抛出异常 
     try 
     { 
         myDic.Add("ddd","ddd"); 
     } 
     catch (ArgumentException ex) 
     { 
         Console.WriteLine("此键已经存在:"+ ex.Message); 
     } 
     //解决add()异常的方法是用ContainsKey()方法来判断键是否存在 
     if (!myDic.ContainsKey("ddd")) 
     { 
         myDic.Add("ddd", "ddd"); 
     } 
     else 
     { 
         Console.WriteLine("此键已经存在:"); 
     } 
   
     //而使用索引器来负值时,如果建已经存在,就会修改已有的键的键值,而不会抛出异常 
     myDic ["ddd"]="ddd"; 
     myDic["eee"] ="555"; 
   
     //使用索引器来取值时,如果键不存在就会引发异常 
     try 
     { 
        Console.WriteLine("不存在的键\"fff\"的键值为:"+ myDic["fff"]); 
     } 
     catch (KeyNotFoundException ex) 
     { 
         Console.WriteLine("没有找到键引发异常:"+ ex.Message); 
     } 
     //解决上面的异常的方法是使用ContarnsKey() 来判断时候存在键,如果经常要取健值得化最好用 TryGetValue方法来获取集合中的对应键值 
     string value =""; 
     if (myDic.TryGetValue("fff", out value)) 
     { 
         Console.WriteLine("不存在的键\"fff\"的键值为:"+ value ); 
     } 
     else 
     {    
         Console.WriteLine("没有找到对应键的键值"); 
     } 
   
     //下面用foreach 来遍历键值对 
     //泛型结构体用来存储健值对 
    foreach (KeyValuePair<string, string> kvp in myDic) 
    { 
        Console.WriteLine("key={0},value={1}", kvp.Key, kvp.Value); 
    } 
    //获取值得集合 
    foreach (string s in myDic.Values) 
    { 
        Console.WriteLine("value={0}", s); 
    } 
    //获取值得另一种方式 
    Dictionary<string, string>.ValueCollection values = myDic.Values; 
    foreach (string s in values) 
    { 
        Console.WriteLine("value={0}", s); 
    } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值