zoukankan      html  css  js  c++  java
  • C#集合类:动态数组、队列、栈、哈希表、字典

    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);
        }

  • 相关阅读:
    如何保持mysql和redis中数据的一致性?
    秒杀系统设计&测试
    缓存穿透、缓存击穿、缓存雪崩区别和解决方案
    数据库关联子查询和非关联子查询
    mysql中 = 与in区别_浅析mysql中 exists 与 in 的区别,空判断
    mysql关键字执行顺序
    python中字典删除元素
    Python list根据下标插入/删除元素
    nginx504网关超时解决方法
    CDN加速
  • 原文地址:https://www.cnblogs.com/jsping/p/2520840.html
Copyright © 2011-2022 走看看