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>

示例:

";
  
     //使用索引器来取值时,如果键不存在就会引发异常
     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);
    }

C#集合类:动态数组、队列、栈、哈希表、字典的更多相关文章

  1. 算法入门 - 基于动态数组的栈和队列(Java版本)

    之前我们学习了动态数组的实现,接下来我们用它来实现两种数据结构--栈和队列.首先,我们先来看一下栈. 什么是栈? 栈是计算机的一种数据结构,它可以临时存储数据.那么它跟数组有何区别呢? 我们知道,在数 ...

  2. java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表

    java实现 数据结构:链表. 栈. 队列.优先级队列.哈希表   数据结构javavector工作importlist 最近在准备找工作的事情,就复习了一下java.翻了一下书和网上的教材,发现虽然 ...

  3. [PHP] PHP数组的实现哈希表(HashTable)结构

    PHP中使用最为频繁的数据类型非字符串和数组莫属,使用哈希表实现的PHP数组.1.数据结构:保存哈希表容器,保存数据的容器2.哈希函数实现:需要尽可能的将不同的key映射到不同的槽(bucket)中, ...

  4. 检索 04 --Stack栈 Queue队列 Hashtable哈希表

    //Stack 先进后出 没有索引 Stack st = new Stack(); st.Push(12); st.Push(11); st.Push(22); st.Push(34); st.Pus ...

  5. list,arraylist,哈希表,字典,datatable的selct等等用法

    例子一.获取到list中的最大值,极其索引 List<int> ls = new List<int>();            ls.Add(1);            l ...

  6. "《算法导论》之‘栈’":栈的三种实现(静态数组、动态数组及指针)

    本文有关栈的介绍部分参考自网站数据结构. 1. 栈  1.1 栈的定义 栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表. (1)通常称插入.删除的这一端为栈顶(Top),另一端称为栈底( ...

  7. Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题

    Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...

  8. perl5 第九章 关联数组/哈希表

    第九章 关联数组/哈希表 by flamephoenix 一.数组变量的限制二.定义三.访问关联数组的元素四.增加元素五.创建关联数组六.从数组变量复制到关联数组七.元素的增删八.列出数组的索引和值九 ...

  9. PHP关联数组和哈希表(hash table) 未指定

    PHP有数据的一个非常重要的一类,就是关联数组.又称为哈希表(hash table),是一种很好用的数据结构. 在程序中.我们可能会遇到须要消重的问题,举一个最简单的模型: 有一份username列表 ...

  10. 深入理解PHP内核(六)哈希表以及PHP的哈希表实现

    原文链接:http://www.orlion.ga/241/ 一.哈希表(HashTable) 大部分动态语言的实现中都使用了哈希表,哈希表是一种通过哈希函数,将特定的键映射到特定值得一种数据 结构, ...

随机推荐

  1. Vue_小练习

    <!DOCTYPE html> <html lang='en'> <head> <meta charset='UTF-8'> <meta name ...

  2. php,javascript设置和读取cookie

    1.php设置cookie setcookie($name,$value,expire,path,domain,secrue); //$name:指的是cookie的名字:$value指的是cooki ...

  3. LRJ入门经典-0903切蛋糕305

    原题 LRJ入门经典-0903切蛋糕305 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 如图所示有一个矩形蛋糕,上面划分成 ...

  4. Java 学习(13):抽象类& 抽象方法& 封装

    目录 --- 抽象类 --- 封装 抽象类: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的 ...

  5. 游戏开发之UDK引擎介绍和模型导入

    2014-09-18 10:01:3 3.7.5" style="border:0px; vertical-align:middle; max-width:100%"&g ...

  6. Android学习笔记进阶19 之给图片加边框

    //设置颜色 public void setColour(int color){ co = color; } //设置边框宽度 public void setBorderWidth(int width ...

  7. jquery中最常用的API有哪些

    jquery中最常用的API有哪些 一.总结 一句话总结:取html的方法,class相关的方法,val相关的方法,data相关的方法,attr相关的方法 1.jQuery Object Access ...

  8. Spark MLlib聚类KMeans

    算法说明 聚类(Cluster analysis)有时也被翻译为簇类,其核心任务是:将一组目标object划分为若干个簇,每个簇之间的object尽可能相似,簇与簇之间的object尽可能相异.聚类算 ...

  9. CHARINDEX,REPLACE,LEFT+四大系统函数+模糊查询

    select CHARINDEX('bob','my name is bob',1)--返回12  bob的第一个b在字符串中排第12(从1开始数) select CEILING(456.4)--45 ...

  10. javap 命令 反编译代码

    javap 命令 javap -c classname 一个好的分析class二进制文件的 链接 http://blog.csdn.net/pwlazy/article/details/7954169