zoukankan      html  css  js  c++  java
  • 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:遍历方法相同

  • 相关阅读:
    暂存。2
    暂存。
    dom兼容性问题3 元素操作
    一个查看Access数据库密码的工具
    解除IIS配置节锁定
    解决cef中title不现实tooltip的问题
    创建.symlnk文件
    查询orcale运行的SQL语句记录
    跨域http头
    C#抓取天气数据
  • 原文地址:https://www.cnblogs.com/3020815dzq/p/8183650.html
Copyright © 2011-2022 走看看