使用集合组织相关数据

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的类型

      

原文地址:https://www.cnblogs.com/fl72/p/8176595.html