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

          

  • 相关阅读:
    Java对象的生命周期与作用域的讨论(转)
    [置顶] Oracle学习路线与方法
    Java实现 蓝桥杯 算法训练 未名湖边的烦恼
    Java实现 蓝桥杯 算法训练 未名湖边的烦恼
    Java实现 蓝桥杯 算法训练 未名湖边的烦恼
    Java实现 蓝桥杯 算法训练 最大的算式
    Java实现 蓝桥杯 算法训练 最大的算式
    Java实现 蓝桥杯 算法训练 最大的算式
    Java实现 蓝桥杯 算法训练 最大的算式
    Java实现 蓝桥杯 算法训练 最大的算式
  • 原文地址:https://www.cnblogs.com/fl72/p/8176595.html
Copyright © 2011-2022 走看看