集合

集合:存储一系列数据,数组存储数据时流程是比较松散的。数组只能通过下标牵引,当去寻找一些有条件的数据时必须去遍历数组。每种集合都是为特定用途设计的,大部分的集合是用类来封装的。
ArrayList:动态数组,add属性可以添加类型不同的元素,通过下标来牵引。
 
ArrayList有两个属性,Count:获取动态数组中实际包含的元素数。
 
Capacity:获取或设置集合中可包含的元素数。0,4,8,16……(翻倍增长)。如果8个长度的数组不够了,就要先new一个16个长度的数组,以前的数组就会被当做垃圾被垃圾回收器。这就增加了系统的开销。(只要不重新new,容量就不会改变)
ArrayList al = new ArrayList(3);如果new的时候给它定义容量,那么,容量增长时以我们定义的值翻倍增长。3,6,12……..
但不推荐定义容量。
 
C#基础(Day04)_Queue
执行第一行,实例化集合,但没有对该集合进行初始化。
 
Stack(堆栈);:先进后出
                            方法:Push:把对象插入栈的顶部。
                                      Pop:移除并返回位于栈顶部的对象。
                                      Peek:返回位于栈顶部的对象,但不移除。
C#基础(Day04)_Stack_02
                                         
Queue(队列):先进先出
                            方法:Enqueue:将对象添加到队列的结尾处。
                                          Dequeue:移除并返回位于队列开始处的对象        
 C#基础(Day04)_List_03
栈和队列一般不用for来遍历;用while遍历,因为他的总数随时在变,取走一个,Count就变一次(foreach可以遍历)。栈和队列也不可以用下标来取数据,只能按顺序来取。
 
Hashtable:添加元素调用Add,存储的时候以键值对出现的,哈希是根据键按照一定的算法去算出个值来,这个值就是个内存地址,然后把后面具体的值放在这个地方。所以哈希里的键不能重复。当查找数据时,不遍历,存放数据越多,效率越明显。
C#基础(Day04)_ArrayList_04
List:泛型其实就是类型的参数,把类型当做参数,好处:显而易见,无装箱拆箱操作。可以通过下标来牵引。
 
   List<int> list=new List<int>();
   list.Add(1);
 
  List<string> list2=new List<string>();
  list2.Add("abd");
 
Dictionary<int, string> dic = new Dictionary<int, string>();//泛型的hashtable,int表示键的类型,string表示值的类型,它的键必须唯一。
dic.Add(1, "a");