news 2026/5/25 20:29:08

ArrayList基础操作全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ArrayList基础操作全解析

arraylist基础总结

ArrayList 基础总结

一、基本概念

ArrayList是 C# 1.0 引入的非泛型集合,位于System.Collections命名空间。

特点:

  • ✅ 可以存储任意类型的数据(object)

  • ✅ 大小动态增长(自动扩容)

  • ✅ 按索引访问元素

  • ❌ 需要装箱拆箱(性能开销)

  • ❌ 类型不安全(运行时可能类型转换错误)

  • ⚠️已被 List<T> 取代

二、创建和初始化

csharp

using System.Collections; // 1. 创建空 ArrayListArrayList list1 = new ArrayList();// 2. 指定初始容量 ArrayList list2 = new ArrayList(10); // 3. 从现有集合初始化ArrayList list3 = new ArrayList(new int[] { 1, 2, 3 }); // 4. 添加初始元素ArrayList list4 = new ArrayList() { "A", "B", "C" };

三、基本操作

1.添加元素

csharp

ArrayList list = new ArrayList(); // Add - 添加单个元素list.Add("字符串"); list.Add(123); // 装箱 list.Add(45.67);// AddRange - 添加多个元素list.AddRange(new object[] { "X", "Y", "Z" });// Insert - 指定位置插入list.Insert(1, "插入的元素");// InsertRange - 指定位置插入多个list.InsertRange(2, new object[] { "A", "B" });

2.访问元素

csharp

ArrayList list = new ArrayList() { "A", "B", "C", "D" }; // 索引访问(需要类型转换)string first = (string)list[0];// "A" // 元素数量int count = list.Count;// 4 // 当前容量 int capacity = list.Capacity; // 遍历foreach (object item in list) { Console.WriteLine(item); }// for 循环遍历for (int i = 0; i < list.Count; i++) { Console.WriteLine($"索引 {i}: {list[i]}"); }

3.删除元素

csharp

ArrayList list = new ArrayList() { "A", "B", "C", "D", "B" };// Remove - 删除指定元素(第一个匹配) list.Remove("B"); // 只删除第一个"B" // RemoveAt - 删除指定索引 list.RemoveAt(0); // 删除第一个元素 // RemoveRange - 删除指定范围 list.RemoveRange(1, 2); // 从索引1开始删除2个 // Clear - 清空所有 list.Clear();

4.查找元素

csharp

ArrayList list = new ArrayList() { "Apple", "Banana", "Apple" };// Contains - 是否包含 bool hasApple = list.Contains("Apple"); // true // IndexOf - 查找索引(第一个) int firstIndex = list.IndexOf("Apple"); // 0 // LastIndexOf - 查找索引(最后一个) int lastIndex = list.LastIndexOf("Apple"); // 2// BinarySearch - 二分查找(要求已排序) list.Sort(); int index = list.BinarySearch("Banana"); // 返回索引

5.排序和反转

csharp

ArrayList list = new ArrayList() { 5, 2, 8, 1, 9 };// Sort - 排序(升序) list.Sort(); // 1, 2, 5, 8, 9 // Reverse - 反转 list.Reverse(); // 9, 8, 5, 2, 1// 自定义排序 list.Sort(new MyComparer());

6.转换方法

csharp

ArrayList list = new ArrayList() { 1, 2, 3 };// ToArray - 转换为对象数组 object[] array = list.ToArray(); // CopyTo - 复制到数组 int[] target = new int[3]; list.CopyTo(target, 0); // GetRange - 获取子集 ArrayList subList = list.GetRange(1, 2); // 从索引1开始取2个

四、ArrayList vs List<T> 对比

特性ArrayListList<T>
类型安全❌ 运行时检查✅ 编译时检查
性能❌ 装箱拆箱开销✅ 无类型转换
代码简洁性❌ 需要强制转换✅ 直接使用
泛型支持❌ 不支持✅ 支持
LINQ支持有限支持✅ 完全支持
内存效率❌ 较低✅ 较高
推荐使用❌ 已过时✅ 现代标准

五、转换方法

ArrayList → List<T>

csharp

// 方法1:遍历转换 ArrayList arrayList = new ArrayList() { "A", "B", "C" }; List<string> list1 = new List<string>(); foreach (object item in arrayList) { list1.Add((string)item); // 需要转换 } // 方法2:使用 Cast 或 OfType List<string> list2 = arrayList.Cast<string>().ToList(); // 全部转换 List<string> list3 = arrayList.OfType<string>().ToList(); // 只转换string类型

List<T> → ArrayList

csharp

List<string> list = new List<string>() { "A", "B", "C" }; ArrayList arrayList = new ArrayList(); arrayList.AddRange(list); // 或直接 ArrayList arrayList2 = new ArrayList(list);

备忘表:

  • 添加Add(),AddRange(),Insert()

  • 删除Remove(),RemoveAt(),Clear()

  • 查找Contains(),IndexOf(),BinarySearch()

  • 排序Sort(),Reverse()

  • 转换ToArray(),GetRange(),CopyTo()

  • 比较:Equals()

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 7:32:27

G-Star 精选开源项目推荐|12.7 — 12.12

G-Star 开源摘星计划&#xff0c;简称 G-Star 计划&#xff0c;是 AtomGit 平台推出的针对开源项目成长全流程的扶持计划&#xff0c;我们为每一个申请加入 G-Star 计划的开源项目提供资源对接与运营支持&#xff1a;包括代码托管、品牌市场推广、社区化运营等。参与 G-Star 计…

作者头像 李华
网站建设 2026/5/26 4:52:31

模数转换芯片FZH709,应用开发相关数据技术手册

1 芯片功能说明 FZH709 是一款高精度、低功耗模数转换芯片&#xff0c;一路差分输入通道&#xff0c;内置温度传感器和 高精度振荡器。 FZH709 的 PGA 可选&#xff1a;1、2、64、128&#xff0c;默认为 128。 FZH709 正常模式下的 ADC 数据输出速率可选&#xff1a;10Hz、40Hz…

作者头像 李华
网站建设 2026/5/26 4:52:44

16B参数撬动千亿级能力:Ring-mini-2.0重新定义轻量化大模型标准

16B参数撬动千亿级能力&#xff1a;Ring-mini-2.0重新定义轻量化大模型标准 【免费下载链接】Ring-mini-2.0 项目地址: https://ai.gitcode.com/hf_mirrors/inclusionAI/Ring-mini-2.0 导语 你还在为大模型部署成本高、推理速度慢而烦恼吗&#xff1f;蚂蚁集团最新开源…

作者头像 李华
网站建设 2026/5/26 4:56:43

3个理由告诉你为什么必须下载SimHei字体:告别中文乱码困扰

3个理由告诉你为什么必须下载SimHei字体&#xff1a;告别中文乱码困扰 【免费下载链接】SimHei字体资源下载 SimHei字体资源提供了一个简洁高效的解决方案&#xff0c;特别适合在数据可视化工具如matplotlib中显示清晰的中文字符。该字体文件不仅适用于图表制作&#xff0c;还能…

作者头像 李华
网站建设 2026/5/25 12:38:34

5个实战技巧:让你的AI提示词效果提升300%

5个实战技巧&#xff1a;让你的AI提示词效果提升300% 【免费下载链接】Prompt-Engineering-Guide dair-ai/Prompt-Engineering-Guide: 是一个用于指导对话人工智能开发的文档。适合用于学习对话人工智能开发和自然语言处理。特点是提供了详细的指南和参考资料&#xff0c;涵盖了…

作者头像 李华
网站建设 2026/5/26 5:53:18

采用Flask框架的不动产租赁业务管理系统--毕设附源码68285

摘 要 本论文设计并实现了一个基于Flask框架的不动产租赁业务管理系统&#xff0c;旨在为租客、房东和管理员提供高效、安全的房产租赁服务。系统采用Python编程语言和MySQL数据库&#xff0c;使用Flask作为后端开发框架&#xff0c;具备高度的可扩展性和易维护性。 系统主要分…

作者头像 李华