zoukankan      html  css  js  c++  java
  • 使用集合组织相关数据

    1.集合概念

      集合可以动态扩容

    2.ArrayList

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

      索引从0开始

      ArrayList类属于System.Collections命名空间,这个命名空间包含接口和类,这些接口和类定义各种对象的集合.ArrayList就属于集合的一种,因此,在使用ArrayList类之前一定要引入System.Collections命名空间

           属性名称        说明
           Count  获取ArrayList中实际包含的元素数
     返回值类型  方法名称        说明
     int  Add(Object value)  将对象添加到ArrayList的结尾处
     void  RemoveAt(int index)  移除ArrayList制定索引的元素
     void  Remove(Object value)  从ArrayList中移除特定对象
     void  Clear()  从ArrayList中移除所有元素

      1)给ArrayList添加数据

        通过Add()方法添加元素

          返回值是int类型,用于返回所添加的元素的索引

          参数:ArrayList中的所有元素都是对象的引用(如,Object引用类型)

      2)存取ArrayList中的单个元素

        ArrayList获取一个元素的方法和数组是一样的,也是通过索引(index)来访问,ArrayList中第一个元素的索引是0.需要注意的是,由于给ArrayList添加的元素都会被转换为Object型,所以在访问这些元素的时候必须把它们转换回原来的数据类型

      3)遍历ArrayList中的元素

        使用for循环或者foreach循环

      4)删除ArrayList中的元素

        Remove()方法和RemoveAt()方法只能删除一个元素,而Clear()方法可以删除集合中的所有元素

      5)判定某个元素是否在集合中

         使用.Contains()方法

      6)在某个位置添加新的元素

        .Insert(index,"元素");

                #region 01.集合使用
                ArrayList list = new ArrayList();
                //1.1  扔数据进去   逻辑思维
                list.Add("罗振宇===时间的朋友===跨年演讲");
               
                list.Add("前HP CEO 卡莉·菲奥莉娜 康柏");
                list.Add("王鸿 ====曾经的网红===那些年,粉丝也是   过亿的!!!!");
                list.Add("隔壁老王");
                list.Insert(1,"我是老二吧!");
                Console.WriteLine("集合中元素总量"+list.Count);
                Console.WriteLine("集合中集合容量" + list.Capacity); //容量
    
                //1.2  遍历集合
                foreach (string item in list) //自动迭代  有一个迭代器
                {
                    Console.WriteLine(item);
                }
                //1.3  删除数据
                //方式一:下标
               // list.RemoveAt(0);
                //方式二:根据内容删除
                list.Remove("罗振宇===时间的朋友===跨年演讲");
                Console.WriteLine("==========删除后===============");
                foreach (string item in list) //自动迭代  有一个迭代器
                {
                    Console.WriteLine(item);
                }
                //判定某个元素 是否在集合中
                bool flag=list.Contains("李小龙");
                if (flag)
                {
                    Console.WriteLine("Exists");
                }
                else
                {
                    Console.WriteLine("Not Exists");
                }
                #endregion    
    

    2.通过集合初始化器(Collection Initializers)构造集合

          通过集合初始化器,无须在代码中指定多个对该类Add()方法的调用,编译器会添加这些调用,从而节省了很多的编码工作

          示例代码:

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

     2.Hashtable(双列集合)

        通常称为:哈希表,它的每个值都是一个键/值对

        命名空间:System.Collections

        常用属性及方法:

    ★对HashTable遍历三种方案:

               ☆:第一种方式,遍历所有的keys,通过key的值获取value

               ☆:第二种方式:遍历所有的value集合

               ☆:第三种方式,同时遍历key和value

        示例代码:

     #region 01.双列集合HashTable(哈希表)
                Hashtable table = new Hashtable();  //table中的一个item=key+value
                table.Add("ICBC", "工商银行");
                table.Add("ABC", "农业银行");
                table.Add("CBC","中国建设银行");
    
                //根据key获取value
                Object bankName=table["ICBC"];
                Console.WriteLine(bankName);
                Console.WriteLine("===============================");
                //遍历的手段
                //foreach  for 因为HashTable 只有key没有索引,for 通过下标取值
                //Value   方式一:通过Key取出Value
                foreach (Object key in table.Keys)
                {
                    Console.WriteLine(key);
                    //索引器
                    Console.WriteLine(table[key]);
                }
                //直接Value,如果我们能拿到所有值的集合  。
                foreach (Object value in table.Values)
                {
                    Console.WriteLine(value);    
                }
                //key+value 迭代  ,一次拿到的是key+value的组合
                foreach (DictionaryEntry item in table)
                {
                    //Console.WriteLine("");
                    Console.WriteLine(item.Key);
                    Console.WriteLine(item.Value);
                }
               #endregion        

     3.集合扩充原理:(Cpcity)

        初始状态,容量为0

        开始出现,容量为4

        每次超过当前容量,容量为(当前容量*2)

        简单示例代码:    

    int[] nums = new int[0];
    int num = (nums.Lentght==0)?4:(nums.Lenght*2);

    二.泛型和泛型集合

      1.泛型

        引入概念:集合参数类型

        可以最大限度地重用代码,保护类型的安全及提高性能

        List<T>,Dictionary<K,V>

      #region 01.泛型集合先导课程
                PM pm = new PM();
    
                SE s1 = new SE();
    
                SE s2 = new SE();
    
                ArrayList list = new ArrayList();
                list.Add(pm);
                list.Add(s1);
                list.Add(s2);
    
                foreach (Object item in list)
                {
    
                }
    
                //PM pmResult=(PM)list[0];
                //SE seResult1 = (SE)list[1];
                //SE seResult2 = (SE)list[2]; 
                #endregion    

     2.泛型集合List<T>

        代替ArrayList

        命名空间:System.Collection.Generic

        语法:

    List<T> 对象名 = new List<T>();
        //“<T>”中T可以对集合中元素类型进行约束

    3.泛型集合Dictionary<K,T>

        代替Hashtable

        命名空间:System.Collection.Generic

        语法:

     Dictionary<K,V> 对象名 = new Dictionary<K,V>
          //“<K,V>”中K表示集合中Key的类型,V表示Value的类型

          

  • 相关阅读:
    【NLP CS224N笔记】汇总
    【NLP CS224N笔记】Lecture 2
    论文摘记 2017.5
    FAST UA API
    FAST Hello World
    NetMagic Simple Overview
    论文摘记 2017.4.25-4.30
    LLDP协议、STP协议 笔记
    FAST:通过Floodlight控制器下发流表
    FAST:NetMagic交换机 与 Floodlight控制器 连接实战
  • 原文地址:https://www.cnblogs.com/fl72/p/8176595.html
Copyright © 2011-2022 走看看