其私下认可领头体积为0,    相同于数组

生龙活虎.集结概述

行使集结协会相关数据,集结协会相关数据

   ArrayList非常周围于数组,也会有人称它为数组列表,ArrayList能够动态维护

 提示:

和数组相符,ArrayList中蕴藏的数目称为成分,ArrayList能够保留的要素数正是ArrayList体积,其暗中认可起头容积为0,能够经过索引访谈ArrayList中的成分,索引从0最初

ArrayList归属System.Collections命名空间,是聚众的风流倜傥种

using System.Collection

ArrayList arr=new ArrayList();

                            ArrayList常用艺术和质量

   属性名称                                        表达

   Count                                   
获取ArrayList中实际上包涵的成分数

回去值类型              方法名称                      表达

int                        Add(Object value卡塔尔国       
将对象增多到ArrayList的结尾处

void                      RemoveAt(int index卡塔尔国    
移除ArrayList钦赐索引处的元素

void                      Remove(Object value卡塔尔(قطر‎  
从ArrayList中移除特定的对象

void                       Clear(卡塔尔(英语:State of Qatar)                       
从ArrayList中移除全部的成分

给ArrayList增加数据

1.ArrayList经过Add方法添欧成分

回去值 :值是叁个int类型,用于重回的要素的目录

参数:假如向ArrayList中增加的成分是值类型,这一个因素就都会装箱管理转变为Object引用类型,然后保留,由此ArrayList中全数的因素都以目的的援用

存取ArrayList中的单个成分

ArrayList获取多少个要素的艺术和数组同样,也是因此索引(index)来拜访,ArrayList中首先个因素的目录是0

遍历ArrayList中的成分

int[] array=new int[]{1,2,3,4,5};

for(int i=0;i<array.length;i++){

Console.WriteLine(array[i]);
}

删去ArrayList中的成分

ArrayList engineers=new ArrayList();

engineers.RemoveAt(0);

enginneers.Remove(ema);

MessageBox.Show(string.Format(“部门共包蕴{0}个程序猿”,engineers.Count.Tostring(卡塔尔(قطر‎卡塔尔卡塔尔;

SE leave=(SE)engineers[0];

MessageBos.Show(leave.SayHi());

RemoveAt(卡塔尔(英语:State of Qatar)和Remove(卡塔尔国方法只好去除二个成分

Hashtable

             Hashtable的常用方法和质量

   属性名称                                     表明

 Count                                   
获取富含在Hashtable中键/值对的多少

 Keys                                      获取富含在Hashtable中键的汇集

 Values                                    获取包括Hashtable中值的成团

 重回值类型                  
方法名称                                                 表明

 void                           Add(Object key,Object
value卡塔尔(قطر‎                  将包括钦赐的键和值的成分加多到Hashtable中

 void                           Remove(Object
key卡塔尔(قطر‎                               从Hashtable中移除带有特定键的因素

 void                          
Clear(卡塔尔(英语:State of Qatar)                                                  
从Hashtable中移除全部的成分

Hashtable通过Add(卡塔尔(قطر‎方法添欧元素

Hashtable的Add()方法有三个参数,五个象征键,三个不是键所对应的值

遍历Hashtable中的元素

foreach(Oject obj in engineers.Keys){
 Console.WirteLine((string)obj);
}

foreach(Object obj in engineers.Values){

SE se=(SE)obj;
Console.WriteLine(se.Name);
}

泛型和泛型集结

泛型

泛型引进了叁个概念:类型参数。通过使用处目参数(T)减弱了运行时强制转变或装箱操作的高风险,通过泛型能够最大限度的录代替码,尊崇项目标平安及拉长品质,他的最广泛应用就是开创集结类,能够约束集结类中的成分类型。相比标准的泛型集合是List<T>和Dictionary<>;

泛型集结List<T>

语法

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

List<T>与ArrayList的区别

异同点                        List<T>                             
ArrayList

不等点                     对所保存成分做项目约束           
能够追加别的项目

                              增加/读取值类型成分无须拆箱,装箱      
增添/读取值类型成分必要拆箱,装箱

雷同点                    通过索引采访集结中的成分

                             添澳元素方法形似

                             删除成分方法相近

泛型集结Dictionary<K,V>

语法

Dictionary<K,V>对象名=new Dictionary<K,V>();

例如:

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

                                            Dictionary和Hashtable的对比

   异同点                      Dictionary<K,V>                                   Hashtable

 差别点                        对所保存成分做项目限定                           
能够追加别的类型

                                 
增加/读取值类型成分无须拆箱,装箱            增添/读取值类型元素供给拆箱,装箱

 相同点                        通过Key获取Value

                                  添英镑素方法意气风发致

                                  删除成分方法风姿罗曼蒂克致

                                  遍历方法相像

Dictionary还可以动用上面的措施

foreach(KeyValuePair<string,SE> en in engineers){
 Console.WriteLine(en.Key);

Console.WriteLine(en.Value.Name);
}

泛型类

语法

public class 类名<T>{
  //。。。。。。。。
}

http://www.bkjia.com/C\_jc/1198202.htmlwww.bkjia.comtruehttp://www.bkjia.com/C\_jc/1198202.htmlTechArticle使用集合组织相关数据,集合组织相关数据
ArrayList非常相仿于数组,也可能有人称它为数组列表,ArrayList能够动态维护
提醒: 和数组相像,…

  特点:可动态扩大体量

  1.ArrayList(数组列表)

    相同于数组,可动态维护

    命名空间:System.Collections   

      此命名空间包罗接口和类。那么些接口和类定义各样对象的集结 

    1.ArrayList常用艺术及品质

            属性名称

          说明

            Count

赢得ArrayList中实际包涵的要素数

            Capacity

获取ArrayList的容量

   再次回到值类型

         方法名称

           说明

     int

 Add(Object value)

 将对象加多到ArrayList的结尾处

     void

RemoveAt(int index) 

 移除ArrayList钦点索引处的要素

     void

 Remove(Object value)

从ArrayList中移除特定的对象 

     void

 Clear()

从ArrayList中移除全体因素 

     bool

 Contains(Object value)

 判别ArrayList中是或不是含有特定对象

     void

Insert(int index,Object value) 

 添欧元素到ArrayList中的钦定下标

      示例代码:

        

            #region 01.集合使用
            ArrayList list = new ArrayList();
            //1.1  扔数据进去   逻辑思维
            list.Add("罗振宇===时间的朋友===跨年演讲");

            list.Add("前HP CEO 卡莉·菲奥莉娜 康柏");
            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

    常用属性及方法:

             属性名称

            说明

             Count

赢得包括在Hashtable中键/值对的数码

             Keys

得到包涵在Hashtable中键的聚焦

             Values

得到包蕴在Hashtable中值的聚众

   重临值类型

           方法名称

             说明

     void

 Add(Object key,Object value)

 将代言钦定键和值的因素增添到Hashtable中

     void

 Remove(Object key)

 从Hastable中移除带有内定键的因素

     void

 Clear()

 从Hastable中移除全数因素 

    

    ★对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)

    扩大体积的触发机遇是在调用Add()方法的时候

    轻便示例代码:    

      

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可以对集合中元素类型进行约束

    示例代码:

      

            #region 02.泛型集合
            //<真实类型> 限定 Add()入参的类型  
            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);
            }
            #endregion

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

    代替Hashtable

    命名空间:System.Collection.Generic

    语法:

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

    废话相当少说,上代码:

      

            #region 03.双列集合  Dictionay<K,V>
            Dictionary<string, string> dic = new Dictionary<string, string>();
            dic.Add("ICBC","中国工商银行");

            dic.Add("ABC", "中国农业银行");

            dic.Add("CBC", "中国建设银行");

            //找一下 EBank 有没有在集合中
            bool flag=dic.ContainsKey("EBank");
            if (flag)
            {
                Console.WriteLine("存在");
            }
            else
            {
                Console.WriteLine("不存在");
            }

            //双列集合遍历方案
            //方式一:
            foreach (string key in dic.Keys)
            {
                Console.WriteLine(key);
                Console.WriteLine(dic[key]);
            }
            //方式二;直接获取Value
            foreach (string value in dic.Values)
            {
                Console.WriteLine(value);
            }
            //方式三:key+value =======item
            foreach (KeyValuePair<string,string> item in dic)
            {
                Console.WriteLine(item.Key);
                Console.WriteLine(item.Value);
            }


            #endregion

         KeyValuePair<TKey,电视机alue>是二个泛型构造,定义可设置或探求的键/值对。那部分就十分少做得了,我们能够经过MSDN领会

 

 

 

 

★注:泛型集结能够当作类的二个特性,使用泛型集结必需实例化~~~~~~~~