ArrayList

   (1) ArrayList非常类似数组,也称为数组列表,ArrayList可以动态维护。数组的容量是固定的,而ArrayList的容量可以根据需要来自动扩充,它的索引会根据程序的扩展而重新进行分配和调整ArrayList提供了一系列方法对其中的元素进行访问,增加删除操作。

   (2)ArrayList类属于System.Collections命名空间,这个命名空间包含接口和类,这些接口和类定义各种对象(比如列表,队列,位数组,哈希表和字典)的集合。ArrayList就属于集合的一种,因此在使用ArrayList类之前一定要引入System.Collections命名空间

         

using System.Collections;
//创建容量为0的ArrayList对象
ArrayList student=new ArrayList();
//创建容量为5的ArrayList对象
ArrayList teachers=new ArrayList(5);

                属性名称                                     说明

                       count                            获取ArrayList中的实际包含的元素数

   返回值类型               方法名称                                       说明

        int                         Add(Object value)       将对象添加到ArrayList的结尾处

       void                     RemoveAt(int index)     移除ArrayList指定索引处的元素

       void                     Remove(Object  value) 从ArrayList中移除特定对象

       void                     Clear()                           从ArrayList中移除所有元素

 

1.给ArrayList添加数据

                  返回值:值是一个int整型,用于返回所添加的元素的索引。

                  参数:向ArrayList中添加的元素是值类型,这些元素就都会装箱处理装换为Object引用类型。然后保存,因此ArrayList中的所用元素都是对象的引用

                 

private void btntest_Click(object sender,EventArge e){
     //建立部门工程师集合
    ArrayList list =new ArrayList();
    //初始化一个员工
    SE se=new SE();
    se.Name="王小毛";                //名称    
    se.Id=101;                    //工号
    se.Age=17;              //年龄
    list.Add(se);
    MessageBox.Show("部门有几个员工"+list.Count.ToString());  
}
using System.Collections;

    //创建容量为0的ArrayLst对象

            ArrayList stu=new ArrayList();
        
            //创建容量为5的ArrayList对象

            ArrayList tea=new ArrayList(5);

 存取ArrayList中的单元素

SE engineer=(SE)engineers[0];
MessageBox.show(engineer.SayHi());

遍历ArrayList中的元素        

static void Main(string[] args)
{
     int[]array=new int[]{0,1,2,3,4};
     for(int i=0;i<array.Length;i++)
      {
          console.WriteLine(array[i])

       }
}

 泛型集合 Dictionary<K,v>

      Dictionary<k,v> 它具有泛型的全部特性,编译时检查类型约束,获取元素时无须类型转换,并且它存储数据的

      方式和Hashtable类似,也是通过key / value(键/值)对元素的保存。

    语法:

          Dictionary<k,v>对象名 =new Dictionary<k,v>();   

       如:Dictionary<string,SE> engineers =new Dictionary<string,SE>();  

        List《T》与ArrayList的区别

                                     List《T》                                      ArrayList

       异同点:       对所保存元素进行类型约束              可以增加任何类型

                            添加/读取值类型元素无需拆箱和装箱        添加/读取值类型元素须拆箱和装箱

       相同点:     通过索引访问集合中的元素

                            通过索引访问集合中的元素

                            添加和删除元素方法相同

 获取Hashtable的元素

      和ArrayList不同,访问Hashtable元素时可以直接通过剑3名来获取具体值,同样,

      由于值类型是Object,所以当得到一个值时,也需要通过类型转换得到指定类型的

      对象。

    

Hashtable engineers=new Hashtable ();
//访问单个元素
Hashtable eng = (SE) eng["000"];
MessageBox.Show(se23.SayHi());

3.删除Hashtable的元素

      通过键(key),使用Remove()方法就可以删除Hashtable的元素。

//删除元素
engineers.Remove("000");

4遍历Hashtable中的元素

      由于Hashtable不能通过索引访问,所以遍历一个Hashtable只能用(foreach)方法。

//foreach遍历
foreach(Object obj in  has.Keys){

          Console.WriteLine((string) obj);    //foreach遍历出Hashtable中的键元素
} 

//foreach遍历
foreach(Object obj in  has.Values){
     SE seFor=(SE)obj;
     Console.WriteLine(seFor.Name);    //foreach遍历出Hashtable中的值元素
} 

Dictionary<k,v>和Hashtable的对比

                                 Dictionary<k,v>                                      Hashtable

 不同点:   对所保存元素进行类型约束,                    可以增加任何类型

                          添加/读取值类型元素无须拆箱和装箱                           添加/读取值类型元素须拆箱和装箱                               

 

 相同点:  通过索引访问集合中的元素,添加和删除元素方法相同,遍历方法相同,通过key获取Value