可动态维护,其默许先河容量为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()                       
从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()和Remove()方法只好去除一个元素

Hashtable

             Hashtable的常用方法和质量

   属性名称                                     表达

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

 Keys                                      获取包罗在Hashtable中键的集纳

 Values                                    获取包括Hashtable中值的会师

 再次回到值类型                  
方法名称                                                 表明

 void                           Add(Object key,Object
value)                  将富含指定的键和值的要素添加到Hashtable中

 void                           Remove(Object
key)                               从Hashtable中移除带有特定键的因素

 void                          
Clear()                                                  
从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精通

 

 

 

 

★注:泛型集合可以看成类的一个性质,使用泛型集合必须实例化~~~~~~~~