C#中的集合有几种? 
Array

ArrayList

List<T>

Stack<T>

Queue<T>

Dictionary<K,V>

HashTable   
集合,表示可以通过遍历每个元素来访问的一组对象(特别是可使用foreach循环访问) 一个集合包括多个元素,即有一个集合类对象和N个元素对象 
 
因为任何集合类都实现了IEnumerable接口,所以任何集合类对象都有一个
GetEnumerator()方法,该方法可以返回一个实现了 IEnumerator接口的对象,这个返回的IEnumerator对象既不是集合类对象,也不是集合的元素类对象,它是一个独立的类对象。通过这个对象,可以遍历访问集合类对象中的每一个元素对象  
如果集合类是用户自定义的集合类,则用户必须实现它的GetEnumerator()方法,否则不能使用循环。当然,与这个自定义集合类对应的IEnumerator类(实现了该接口的类),也要自定义一个才行  
比如,ArrayList集合类对应的IEnumerator是 ArrayListEnumeratorSimple             Array集合类对应的IEnumerator是 SZArrayEnumerator       (这两个类在.net framework类库文档(msdn)中都没有介绍)  
1.System.Colloctions中表示集合的行为的接口有: 1)ICollection 
定义所有集合的大小、枚举数和同步方法。派生于IEnumerable 它定义了集合类最基本的行为,所有的集合类都实现了这个接口(基接口) 但是它的行为太过基本:主要就是一个Count属性,单独实现它没有太大意义  
2)IEnumerable 
公开枚举数,该枚举数支持在集合上进行简单迭代 
它只有一个方法 GetEnumerator(),该方法可以返回一个IEnumerator接口,通过它可以遍历集合 
基本上所有的集合类都实现了这个接口  3)IList 
IList实现是可排序且可按照索引访问其成员的值的集合,它本身实现了ICollection和IEnumerable接口 
是所有列表的抽象基类。IList 实现有三种类别:只读、固定大小、可变大小。

4)IDictionary 
IDictionary实现是键/值对的集合,它本身实现了ICollection和IEnumerable接口 是键/值对的集合的基接口。IDictionary 实现有三种类别:只读、固定大小、可变大小。 IDictionary可称为字典、映射或散列表,它根据键(任意类型)来访问值   
2.System.Collections中可以直接使用的集合类有: 1)ArrayList 
实现了接口:IList、ICollection、IEnumerable 
只要集合未被修改,ArrayList 就可安全地同时支持多个读取器 
随着向 ArrayList 中添加元素,容量通过重新分配按需自动增加(2倍增加) 如果需要建立一个对象数组,但不能预先知道数组的大小,就可以使用ArrayList 
ArrayList把所有元素都当作object对象引用,因而在访问ArrayList的元素时要进行类型转换 
优点:动态改变大小、灵活方便的插入和删除元素、可排序 缺点:插入时性能不如数组、不是强类型的  
2)BitArray 
实现了接口:ICollection、IEnumerable 管理位值的压缩数组。  
3)Hashtable 
实现了接口:IDictionary、ICollection、IEnumerable 
可以向Hashtable中自由添加和删除元素,有些像ArrayList,但没有那么大的性能开销  
4)SortedList 
实现了接口:IDictionary、ICollection、IEnumerable 
SortedLIst兼顾了ArrayList和Hashtable的优点,可按键值来排序  5)Queue 
实现了接口:ICollection、IEnumerable Queque是队列,先进先出的访问各个元素 
可以调用Queque对象的GetEnumerator()方法,得到IEnumerator对象,来遍历队列中的各个元素  6)Stack 
实现了接口:ICollection、IEnumerable Stack是堆栈,后进先出的访问各个元素 
可以调用Stack对象的GetEnumerator()方法,得到IEnumerator对象,来遍历堆栈中的各个元素

C#中的集合有几种?的更多相关文章

  1. java中遍历集合的三种方式

    第一种遍历集合的方式:将集合变为数组 package com.lw.List; import java.util.ArrayList; import java.util.List; import ja ...

  2. Java中List集合的三种遍历方式(全网最详)

    List集合在Java日常开发中是必不可少的,只要懂得运用各种各样的方法就可以大大提高我们开发的效率,适当活用各种方法才会使我们开发事半功倍. 我总结了三种List集合的遍历方式,下面一一来介绍. 首 ...

  3. Java中Map集合的四种访问方式(转)

    最近学习Java发现集合类型真是很多,访问方式也很灵活,在网上找的方法,先放下备用 public static void main(String[] args) { Map<String, St ...

  4. java中list集合的几种去重方式

    public class ListDistinctExample { public static void main(String[] args) { List<Integer> list ...

  5. [转载]C#中字典集合的两种遍历

    Dictionary<string, string> dictionary = new Dictionary<string,string>(); foreach (string ...

  6. 菜鸟日记之 java中的集合框架

    java中的集合框架图 如图所示:java中的集合分为两种Collection和Map两种接口 可分为Collection是单列集合和Map的双列集合 Collection单列集合:继承了Iterat ...

  7. java中对集合对象list的几种循环访问

    java中对集合对象list的几种循环访问的总结如下 1 经典的for循环 public static void main(String[] args) { List<String> li ...

  8. (转)java中对集合对象list的几种循环访问总结

    Java集合的Stack.Queue.Map的遍历   在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack.Queue.Map类型的遍历,还是有一 ...

  9. java中的集合/容器的数据结构

    最近双11在网上买了本 数据结构和算法--java语言实现,正在啃,同时在慕课网上的学习进度来到了集合框架这一类,对于这一块算是刚刚了解,本科的时候数据结构学习的是严蔚敏老师的那本数据结构,代码的实现 ...

随机推荐

  1. 任务调度开源框架Quartz动态添加、修改和删除定时任务

    Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制.Quartz框架包含了调度器监听.作业和触发器监听.你可以配置作业和触发器监听为全局监听或者是特定于 ...

  2. [No00002B]知乎精选:如果兔子都在拼命奔跑,乌龟该如何前进

    最近看到友人分享的一篇好文章,看了不下三遍,想开了很多的事情…… 在这个世界上永远存在一些比你更加牛的人,无论什么方面.如果把人生比作攀登,也许你穷其一生可以达到一定的高度,但对某些人来说珠峰都不成问 ...

  3. NOIP2003 神经网络

    题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神经网络的研究一直是当今 ...

  4. Oracle中把一个DateTime的字符串转化成date类型。to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'),

    Oracle中把一个DateTime或者该形态字符串转化成date类型. to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'), 或者: sele ...

  5. DINIC网络流+当前弧优化

    DINIC网络流+当前弧优化 const inf=; type rec=record s,e,w,next:longint; end; var b,bb,d,q,tb:..] of longint; ...

  6. Apache mod_rewrite规则重写的标志一览

    1) R[=code](force redirect) 强制外部重定向 强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省 ...

  7. php加载xml编码错误,“Error: Input is not proper UTF-8, indicate encoding! ”

    最近在给php中解析xml的时候,抛出一个错误: "Warning: DOMDocument::load(): Input is not proper UTF-8, indicate enc ...

  8. [转]ReactPHP── PHP版的Node.js

    FROM : http://www.csdn.net/article/2015-10-12/2825887 摘要:ReactPHP作为Node.js的PHP版本.在实现思路,使用方法,应用场景上的确有 ...

  9. Centos6.4安装erlang并配置mysql数据库

    在安装时,一定要使用Centos6.4光盘为yum源,否则可能使用了版本有问题的openssl 1.首先要先安装GCC GCC-C++ Openssl等依赖模块: yum -y install mak ...

  10. noi题库(noi.openjudge.cn) 1.8编程基础之多维数组T11——T20

    T11 图像旋转 描述 输入一个n行m列的黑白图像,将它顺时针旋转90度后输出. 输入 第一行包含两个整数n和m,表示图像包含像素点的行数和列数.1 <= n <= 100,1 <= ...