zoukankan      html  css  js  c++  java
  • C#中的集合类——ArrayList

    1.  ArrayList与数组

      数组的长度不可变,元素的类型单一;

      ArrayList 实际上相当于一个可变长度的动态数组,由于集合中的元素都是object类型,元素的类型可以有多种了;与数组一样,都可以用下标来访问元素。 

    2.  ArrayList的常用的方法 

        ArrayList list = new ArrayList();

       1)添加元素到集合

         为集合添加单个元素: list.Add(1);

          将集合添加到集合中: list.AddRange(new int[] { 0, 1, 2, 3, 4 }); //将数组添加到集合中

                     list.AddRange(list1); //将另一个集合中所有的元素添加到集合

          调用Add方法后,添加的元素都被转换为object类型,这里就包含了里氏转换原则。 

       2)删除集合中元素

           list.Remove(1);  //删除集合中第一个值为1的元素;删除单个元素,写谁就删谁。

           list.RemoveAt(0); //根据下标来删除元素   删除第0个元素后,后面的元素会自动移到前面来

           list.RemoveRange(2, 4); //从2位置开始,删除4个的元素

       3)确定元素是否在集合中

          if ( !list.Contains("windrunner") )

       4)将元素插入到集合中   

            list.Insert(2, "插入的元素");  //在指定位置插入一个元素

            list.InsertRange(3, new string[] {"王五","赵六","洪七"});  //在制定位置插入一个集合

       5) 对集合中元素进行排列

         list.Sort();   //升序排列,前提:集合中所有的元素必须是可以互相比较的类型;假如集合中同时存在int和string类型,则无法比较。

       6) 将整个集合中元素的顺序反转

         list.Reverse();  //如 1 2 3  变成 3 2 1

       7)清空所有的元素

         list.Clear();

    3.  ArrayList集合的长度问题

      每次集合中实际包含的元素个数(count)超过了可以包含的元素的个数(capcity)的时候,
      集合就会向内存中申请多开辟一倍的空间,来保证集合的长度一直够用。

    4.  ArrayList集合的两个练习

     1             //创建一个集合,里面添加一些数字,求平均值与和,最大值
     2             ArrayList list1 = new ArrayList();
     3             list1.AddRange(new int[] { 10, 20, 65, 4, 5, 32, 788, 66, 9 });
     4             int sum = 0;
     5             int max = (int)list1[0]; //如果不加(int)来转换,会报错,因为不能将object类型的数据赋值给int变量
     6             foreach (int item in list1)
     7             {
     8                 sum += item;
     9                 if ( item > max)
    10                 {
    11                     max = item;
    12                 }
    13 
    14                 //如果使用for循环,sum += (int)list1[i] 需要将object类型转换为int类型
    15                 //使用foreach 的好处就在这里
    16                 //这里实际上是里氏转换原则,1. object是int的父类,2. 集合中的元素表现出来的时候是object类型,但实际上装的是int类型
    17             }
    18 
    19             Console.WriteLine("这个集合中所有数字的和是{0},平均值是{1}", sum, sum / list1.Count);
    20 
    21             //写一个长度为10的集合,要求在里面随机地存放10个数字(0 - 9),但是要求所有的数字不重复
    22             ArrayList list2 = new ArrayList();
    23             int[] array = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    24             ArrayList listTemp = new ArrayList(array);
    25             Random random = new Random();
    26             for (int i = 0; i < 10; i++)
    27             {
    28                 int index = random.Next(0, listTemp.Count);
    29                 list2.Add(listTemp[index]);
    30                 listTemp.RemoveAt(index);
    31             }
    32 
    33             for (int i = 0; i < list2.Count; i++)
    34             {
    35                 Console.WriteLine(list2[i]);
    36             }
    37             Console.WriteLine();
    38 
    39             ArrayList list3 = new ArrayList();
    40             for (int i = 0; i < 10; i++)
    41             {
    42                 int rNumber = random.Next(0, 10);
    43                 if (!list3.Contains(rNumber))
    44                 {
    45                     list3.Add(rNumber);
    46                 }
    47                 else
    48                 {
    49                     //产生了重复的随机数,本次循环无效
    50                     i--;
    51                 }
    52             }
    53             for (int i = 0; i < list3.Count; i++)
    54             {
    55                 Console.WriteLine(list3[i]);
    56             }

    5.  总结

      ArrayList 集合: 在存储数据的时候很方便,但在取出数据的时候就比较麻烦。因为每次取出数据,都需要进行数据类型的转换。   

  • 相关阅读:
    用python实现average()函数,使得当可变参数长度为0的时候,也能正确返回结果。
    请用python实现函数func,当参数类型为list时,返回list中所有数字类型元素的和,当参数类型为tuple时,返回tuple中所有数字类型元素的乘积。
    用python实现循环和递归的形式定义函数,求出1~100的和。
    python实现0~100的平方和,用sum()函数接收一个list作为参数,并返回list所有元素之和。请计算 1*1 + 2*2 + 3*3 + ... + 100*100。
    用python实现线性回归
    IE11用JS检测判断
    Google Chrome的CSS hack写法
    javascript间窗口互相通信,window.open新建窗口保存父窗口对象
    解决IE6不支持css min-width与min-height
    CSS实现兼容性的渐变背景(gradient)效果(转)
  • 原文地址:https://www.cnblogs.com/lcxBlog/p/4508864.html
Copyright © 2011-2022 走看看