14ArrayList集合和List泛型集合

ArrayList集合

可以存任意的数据类型

但是现在基本用泛型集合List,因为List是一个类型安全的,所以基本不用ArrayList集合
而且ArrayList集合取值不方便,全是object类型,


添加元素

1,添加单个元素add()
.add方法参数是object,因为object是一切数据类型的父类,根据里氏转换得知,所以就代表任意类型都当成这个的参数

   //创建一个 集合对象
            ArrayList arrayList = new ArrayList();//实例化的时候可以给长度比如:new ArrayList(10);,不过这样在扩容的时候就是10*1这样扩的,一次扩10个空间

            arrayList.Add(123);
            arrayList.Add(true);
            arrayList.Add("hello");
            arrayList.Add(1000m);


            int[] numbers = { 1, 3, 5, 7, 9 };

            //添加数组进去
            arrayList.Add(numbers);


            //将集合本身添加进去
            arrayList.Add(arrayList);

            //循环遍历集合里的所有元素
            for (int i = 0; i < arrayList.Count; i++)
            {

                Console.WriteLine(arrayList[i]);


                if (arrayList[i] is int[])//判断是否为数组
                {
                    Console.WriteLine();

                    for (int j = 0; j < numbers.Length; j++)
                    {
                        Console.WriteLine(numbers[j]);
                    }

                    Console.WriteLine();


                }
                else if (arrayList[i] is ArrayList)//判断是否为集合
                {
                    for (int k = 0; k < arrayList.Count; k++)
                    {
                        Console.WriteLine(arrayList[k]);
                    }

                }
            }

2,添加集合元素AddRange():这样添加进去的集合元素在遍历输出时也会自动遍历输出

            //创建一个 集合对象
            ArrayList arrayList = new ArrayList();
			            arrayList.Add(true);//添加单个

            arrayList.AddRange(new int[] { 1, 2, 3, 4, 5 });//添加集合元素
			

            //循环输出全部
            for (int i = 0; i < arrayList.Count; i++)
            {
                Console.WriteLine(arrayList[i]);
            }
			

常用方法

Clear():移除所有元素不需要参数

Remove():根据内容 ,移除单个元素,参数传集合里面有的参数即可

RemoveAt():根据下标 ,移除单个元素,如果被移除的是集合元素里的下标,也是只移除集合元素里的一个,参数传下标

RemoveRange(1,2):根据下标 ,移除一定范围的元素,第一个参数表示开始位置(包括),第二个参数表示移除的长度

Reverse():反转集合

Insert(1,"插入的元素"):插入单个元素,第一个参数为下标,也就是要插入的位置,第二个为要插入的值(任意类型)

InsertRange(1,new int[]{1,2}):插入集合元素

Contains("a")):判断是否包含某个元素

ArrayList集合的长度问题

每次集合中实际包含的元素个数(Count)超过了可以包含的元素的个数(Capacity)的时候,
集合就会向内存中申请多开辟一倍的空间,来保证集合的长度一直够用。(自动扩容),4->8->16->32...

当集合内的元素小于或等于4时

ArrayList arrayList = new ArrayList();

            arrayList.Add(1);
            arrayList.Add(1);
            arrayList.Add(1);


            Console.WriteLine(arrayList.Count);//3

            Console.WriteLine(arrayList.Capacity);//4

当集合内的元素大于4时

  ArrayList arrayList = new ArrayList();

            arrayList.Add(1);
            arrayList.Add(1);
            arrayList.Add(1);
            arrayList.Add(1);
            arrayList.Add(1);


            Console.WriteLine(arrayList.Count);//5

            Console.WriteLine(arrayList.Capacity);//8


List泛型集合

使用方法和arrayList差不多

//创建泛型集合对象
            List<int> list = new List<int>();

            //添加单个元素
            list.Add(1);

            ////添加集合元素
            list.AddRange(new int[] { 2, 3, 4, 5 });

            list.AddRange(list);

            //循环输出集合内的所有元素
            for (int i = 0; i < list.Count; i++)
            {
                Console.WriteLine(list[i]);
            }

将集合转为数组
int[] nums = list.ToArray();

将数组转为集合

int[] nums = new int[] { 1, 2, 3, 4, 5 };

            List<int> intList = nums.ToList();
posted @   青仙  阅读(133)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示