S2 深入.NET和C#编程 三:使用集合组织相关数据

                                                                                                     三:使用集合组织相关数据

集合概念:

ArrayList:非常类似于数组,也有人称他为数组的列表.ArrayList可以动态维护,数组的容量是固定的 和数组类似,ArrayList中存储的是数据成为元素,ArrayList可以保存的元素就是ArrayList 的容量,其默认初始容量为0;可以通过索引访问ArrayList中的元素,索引从0开始

ArrayList是动态维护的

代码:

命名空间:

using System.Collections

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

ArrayList students =new ArrayList();

//创建容量为5的ArrayList对象

ArrayList teacher =new ArtrayList(5);

ArrayList 的属性及方法:

属性:

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

方法:

Add: 将对象添加到ArrayList的结尾处

RemoveAt: 移除ArrayList指定索引处的元素

Remove: 从ArrayList中移除特定的对象

Clear: 从ArrayList中移除所有的元素

 #region 01.集合使用
            ArrayList list = new ArrayList();
            //1.1 仍数据进去 逻辑思维
            list.Add("小娃娃");

            list.Add("大娃娃");

            list.Add("中娃娃");
            //1.2遍历集合
            foreach (string item in list) //自动迭代 有一个迭代器
            {
                Console.WriteLine("item");
            }
            //1.3  删除数据: 

            //方式1:下标
            list.RemoveAt(0);
            //方式2:根据内容删除
            list.Remove("小娃娃");
            foreach (string item in list)
            {
                Console.WriteLine("item");
            }
            //判断某个元素是否存在:
            bool flag = list.Contains("娃娃");
            if (flag)
            {
                Console.WriteLine("存在");
            }
            else {
                Console.WriteLine("不存在");
            }
            #endregion
            

Hashtable:

数据通过键(Key)和值(Value)来组织的

命名空间:

using System.Collections

Hashtable的属性及方法:

属性:

Count:获取包含在Hashtable中键/值对的数目 

Keys:获取包含在Hashtable中键的集合

Value:获取包含在Hashtable中值的集合

方法:

Add();将指定的键和值添加到Hashtable中

Remove();移除带有特定键的元素

clear();从Hashtable中移除所有的元素

  #region 01.双列集合Hashtable(哈希表)
            Hashtable table = new Hashtable();
            table.Add("ICBC", "工商银行");
            table.Add("ABC", "农业银行");
            table.Add("CBC", "中国建设银行");

            //根据key获取value
            object bangName = table["ICBC"];
            Console.WriteLine(bangName);
            Console.WriteLine("======================");

            //遍历的手段

            //foreach for 因为Hashtable 只有key没有索引,for通过下标取值
            //Value 方式一:通过Key取去value;
            foreach (object key in table.Keys)
            {
                Console.WriteLine(key);
                //索引器
                Console.WriteLine(table[key]);
            }
            //直接Value,如果我们能够拿到所有的集合
            Console.WriteLine("======================");
            foreach (object value in table.Values)
            {
                Console.WriteLine(value);
            }
            //key+value迭代,一次拿到的是key+value的组合
            Console.WriteLine("======================");
            foreach (DictionaryEntry item in table)
            {
                Console.WriteLine("");
                Console.WriteLine(item.Key);
                Console.WriteLine(item.Value);

            }
            Console.ReadLine();

            #endregion
             
    
      

泛型和泛型集合:

泛型集合:

语法:

List <T>  对象名 =new List <T>();

代码:
//建立工程师员工集合
List <SE> engineers =new List <SE>();
//初始化三个工程师员工
SE Jack =new SE();
//属性赋值省略
SE joe =new SE();
//属性赋值省略
SE ema =new SE();
//属性赋值省略
//创建PM对象
PM pm =new PM();
//添加元素:
engineers.Add(Jack );
engineers.Add(joe );
engineers.Add(ema );
//[engineers.Add(PM);(添加一个项目经理对象,编译立即报错)]
打印集合中的元素数目:
Messagebox.show(string .Format("部门共包括{0}个工程师。",engineers .Count.Tostring()));
通过Key集合中的元素数目;
SE engineers =engineers ["000"];
MessageBox.Show(engineers .SayHi());
通过Key删除:
engineers .Remove("000");
打印集合中的元素数目:
Messagebox.show(string .Format("部门共包括{0}个工程师。",engineers .Count.Tostring()));
//遍历:
foreach(SE se in engineers .Values ){
//遍历时无须类型转换
MessageBox。show(se.SayHi());
}

 

 

 

 

  //#region 02.集合初始化器
        //ArrayList list2 = new ArrayList()//集合初始化
        //{
        //    new SE (){Name ="张靓颖",age=20},//对象初始化
        //    new SE()
        //};
        //#endregion

        //#region 泛型集合先导课程
      
        //List<SE> list = new List<SE>();
        //SE se = new SE();
        //se.Name= "比尔.盖茨";
        //SE se2 =new SE();
        //se2.Name = "李彦宏";
        //list.Add(se);
        //list.Add(se2 );
        //foreach (SE item in list)
        //{
        //    Console.WriteLine(item.Name);
        //}
        //Console.ReadLine();
      
        //#endregion

  

List<T>和arrayList()的区别:

异:

ist<T>                                                                                                         arrayList()

1:对所保存的元素进行类型的约束                                                       可以增加任何类型

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

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

              2:添加的元素方法相同

              3:删除元素的方法相同

 

Dictionary<k,V>   和Hashtable的区别:

不同点:

   Dictionary<k,V>                                                                                          Hashtable

1:对所保存的元素进行约束                                                                   可以增加任何类型

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

相同点:

1:通过Key获取Value

2:添加的元素方法相同

3:删除元素的方法相同

4:遍历方法相同

 

posted @ 2018-01-03 14:34  秋风伊人  阅读(398)  评论(0编辑  收藏  举报