集合:用来存储一系列数据,数组存储数据时流程是比较松散的。数组只能通过下标牵引,当去寻找一些有条件的数据时必须去遍历数组,这就给我们带来的坏处。而每种集合都是为特定用途设计的,大部分的集合是用类来封装的。

ArrayList:动态数组,add属性可以添加类型不同的元素,通过下标来牵引。
ArrayList有两个属性,Count:获取动态数组中实际包含的元素数。
                                   Capacity:获取或设置集合中可包含的元素数。0,4,8,16…… (翻倍增长)。如果8个长度的数组不够了,就要先new一个16个长度的数组,以前的数组就会被当做垃圾被垃圾回收器。这就增加了系统的开销。
 

集合_Hashtable   

Stack(堆栈):先进后出
                            方法:Push:把对象插入栈的顶部。
                                      Pop:移除并返回位于栈顶部的对象。
                                      Peek:返回位于栈顶部的对象,但不移除。
集合_List_02
                                         
Queue(队列):先进先出
                            方法:Enqueue:将对象添加到队列的结尾处。
                                          Dequeue:移除并返回位于队列开始处的对象   
 集合_Hashtable_03    
 
栈和队列一般不用for来遍历;用while遍历,因为他的总数随时在变,取走一个,Count就变一次(foreach可以遍历)。栈和队列也不可以用下标来取数据,只能按顺序来取。
集合_List_04
 
Hashtable:添加元素时调用Add,存储的时候是以键值对出现的。哈希是根据存储的键按照一定的算法去算出个值来,这个值就是个内存地址,然后把哈希中的值放在这个内在中。所以哈希里的键不能重复。当查找数据时,不需要遍历,存放数据越多,效率越明显。
 
List:泛型其实就是类型的参数,把类型当做参数,好处:显而易见,无装箱拆箱操作。可以通过下标来牵引。
 
List<int> list=new List<int>();
list.Add(1);//定义时确定一种类型,添加时只能添加一种类型,不用进行装箱,拆箱操作
 
List<string> list2=new List<string>();
list2.Add("aaa");