集合ArrayList

Posted DG - SheNg1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合ArrayList相关的知识,希望对你有一定的参考价值。

  

System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合

System.Collections.Generic 命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能

System.Collections.Specialized 命名空间包含专用的和强类型的集合,例如,链接的列表词典位向量以及只包含字符串的集合

 

常用的集合ArrayList;特殊集合一般会用到Queue队列集合、Stack栈集合还有Hashtable哈希表集合。

 

集合不同于数组,是一组可变数量元素的组合,这些元素可能共享某些特征,需要以某种操作方式一起进行操作。一般来说,这些元素的类型是相同的。

 

集合与数组的区别数组连续的、同一类型数据的一块区域,而集合可以是不连续的、多种数据类型

 

 

ArrayList集合

 

 

相同点:

 

  (1)两者都实现了IListICollectionIEnumerable接口

 

  (2)两者都可以使用整数索引访问集合中的元素,包括读取和赋值,且集合中的索引都从0开始

 

不同点:

 

  (1)ArrayList是集合,而Array是数组

 

  (2)ArrayList具体类Array抽象类

 

  (3)数组必须在实例化时指定元素的数量,该数量一旦确定就不可以更改了,而ArrayList扩展了这一点,当实例化一个ArrayList实例时可以不指定集合元素数(有默认初始容量),当然你也可以指定初始容量

 

  (4)获取数组元素数时使用Length属性,而获取ArrayList集合的元素数时使用Count属性

 

  (5)数组可以有多维,而ArrayList只能是一维

 

 

       ArrayList al = new ArrayList(); //初始化

    //赋值

           al.Add(3); //将对象添加到 ArrayList 的结尾处 元素

    al.Add(5);

    al.Add(1);

    al.Add(8);

    al.Add(4);

    

    //错误      因为5号索引之前就没有,所以直接赋值不可以

    al[5] = 9;

    //正确 改值

            al[4] = 9;

 

            //查看个数

      Console.WriteLine(al.Count);//获取 ArrayList 中实际包含的元素数

    //清空集合

            al.Clear(); //从 ArrayList 中移除所有元素

 

     //克隆集合

            ArrayList al1 = new ArrayList();

            al1 = (ArrayList)al.Clone();//创建 ArrayList 的浅表副本

 

       //强转

            Console.WriteLine(al1[2]);

            //判断是否包含某个元素

            Console.WriteLine(al.Contains(6));

 

            //查看第一次出现该元素的索引号   若没有,返回-1

            Console.WriteLine(al.IndexOf(1));

            //查看最后一次出现该元素的索引号

            Console.WriteLine(al.LastIndexOf(9));

 

            //1号索引的位置插入一个4,后面数据的索引依次靠后

            al.Insert(1, 4);

       

    //移除某个元素第一次出现的

            al.Remove(5);

            Console.WriteLine(al[0]); //al[索引号]

    //移除 ArrayList 指定索引处的元素

            al.RemoveAt(2);

            Console.WriteLine(al[2]);

 

    //排序

    for (int i = 0; i < al.Count; i++)

            {

                Console.WriteLine(al[i]);

            }

            Console.WriteLine();

            al.Sort(); //排序升序

            for (int i = 0; i < al.Count; i++)

            {

                Console.WriteLine(al[i]);

            }

            //改为降序

            al.Reverse(); //翻转集合

            for (int i = 0; i < al.Count; i++)

            {

                Console.WriteLine(al[i]);

            }

 

         //遍历集合

            foreach (object aa in al)
            {
                Console.WriteLine(aa);
            }

            int[] array = new int[] { 2, 3, 4, 6, 7, 8, 9, 2 };

            foreach (int aa in array)//遍历数组

            {//定义一个什么类型的数据在数组或集合里面

 

                Console.WriteLine(aa + 2);

            }

 

以上是关于集合ArrayList的主要内容,如果未能解决你的问题,请参考以下文章

笔记--集合

第八章:集合

泛型集合

集合去重复引入排序思想

各种集合的遍历方式

非泛型集合