当前位置: 首页 > news >正文

C#_ArrayList动态数组

目录

ArrayList的特点

ArrayList 与普通数组的区别

使用示例        普通数组        动态数组

主要方法和属性

        属性 Count 获取动态数组的数据个数

                    读取某个位置的数据  // 索引  

        方法 Add 向集合末尾添加元素

                    Insert 在指定位置插入元素

                    IndexOf 查找指定的数据 并返回索引

                    Remove 移除指定的数据

                    RemoveAt 删除数组中指定索引位置的值

                    RemoveRange 删除数组中指定范围内的数据 从0开始 删除3个

                    Reverse 反转

                    Sort 使用默认的排序方式进行排序

                    Clear 清除列表 删除动态数组中所有的数据 Count重置为0

                    foreach遍历动态数组

                    Capacity 获取或设置集合的容量

注意事项


在 C# 中,ArrayListSystem.Collections命名空间下的一个动态数组类,它可以存储不同类型的元素,并且能自动调整大小。以下是关于ArrayList的详细介绍和使用示例:

ArrayList的特点

  • 可以存储任意数据类型的元素(包括值类型和引用类型)
  • 大小会根据需要自动增长
  • 提供了丰富的方法用于操作集合元素
  • 属于非泛型集合,在 C# 2.0 及以后版本中,推荐使用泛型的List<T>

ArrayList 与普通数组的区别

特性普通数组ArrayList
大小固定,创建时指定动态变化
方法只有 length 属性提供丰富的操作方法 (add, remove 等)
存储类型可以是基本类型或对象只能存储对象 (基本类型会自动装箱)
性能初始大小固定时性能好动态扩容时有性能开销

使用示例

普通数组
int[]  arr = { 1, 2, 3, 4 };
动态数组

动态数组(一个集合) 就是不固定长度和储存的数据类型的数组;可以储存任意类型的数据 并且长度会随着数组内容的增加减少进行改变

ArrayList list1 = new ArrayList() {"张三","李四",12,20,true,'c' };

主要方法和属性

  • Add(): 向集合末尾添加元素
  • Insert在指定位置插入元素
  • Contains 查询动态数组中是否存在某个数据
  • GetRange 从动态数组中截取对应数据 返回形成新的动态数组
  • IndexOf ():查找指定的数据 并返回索引
  • Remove(): 删除指定元素
  • RemoveAt 删除指定索引处的元素
  • RemoveRange删除数组中指定范围内的数据
  • Reverse 反转
  • Sort(): 使用默认的排序方式进行排序
  • Clear(): 清空所有元素
  • Count: 获取当前元素数量
  • Capacity: 获取或设置集合的容量

属性
Count 获取动态数组的数据个数
Console.WriteLine("长度:" +  list1.Count);
读取某个位置的数据  // 索引  
Console.WriteLine(list1[5]);
方法
Add 向集合末尾添加元素
list1.Add(20);
list1.Add(arr);
Insert 在指定位置插入元素
list1.Insert(2, "小明");
list1.Insert(4, arr);

Contains 查询动态数组中是否存在某个数据

Console.WriteLine(list1.Contains("张三"));//返回true

 GetRange 从动态数组中截取对应数据 返回形成新的动态数组

// 参数1:开始截取的位置
// 参数2:截取的个数
ArrayList li = list1.GetRange(0, 5);
IndexOf 查找指定的数据 并返回索引
Console.WriteLine(list1.IndexOf(20));
Remove 移除指定的数据
list1.Remove('c');
RemoveAt 删除数组中指定索引位置的值
list1.RemoveAt(0);
RemoveRange 删除数组中指定范围内的数据 从0开始 删除3个
list1.RemoveRange(0, 3);
Reverse 反转
list1.Reverse();
Sort 使用默认的排序方式进行排序
list1.Sort();
Clear 清除列表 删除动态数组中所有的数据 Count重置为0
list1.Clear();
foreach遍历动态数组
foreach (var item in list1)
{Console.WriteLine(item);
}
Capacity 获取或设置集合的容量
空的动态数组。长度起始为0,后期加入数据会自动扩大空间0->4->8->16->...->n*2
list1.Capacity = 0;
Console.WriteLine(list1.Capacity);长度起始为10,后期加入数据会自动扩大空间20->40->80->160->...->n*2
list1.Capacity = 10;
Console.WriteLine(list1.Capacity);

注意事项

  1. ArrayList存储的是object类型,因此值类型会发生装箱操作,可能影响性能
  2. ArrayList中获取元素时需要进行显式类型转换
  3. 在.NET Framework 2.0 及以上版本中,建议使用泛型List<T>替代ArrayList,因为List<T>提供了类型安全和更好的性能

如果你需要类型安全且高性能的动态数组,应该优先考虑使用System.Collections.Generic命名空间下的列表List<T>

http://www.lryc.cn/news/604230.html

相关文章:

  • 3D打印喷头的基本结构
  • [css]旋转流光效果
  • 机械臂抓取的无模型碰撞检测代码
  • Export useForm doesn‘t exist in target module
  • 前端手写贴
  • zoho crm为什么xx是deal的关联对象但是调用函数时报错说不是关联对象
  • Docker初学者需要了解的几个知识点(三):Docker引擎与Docker Desktop
  • BERT和GPT和ELMO核心对比
  • Redis 键值对操作详解:Python 实现指南
  • 字符串函数安全解析成执行函数
  • 解密数据结构之二叉树
  • Wan2.1
  • “非参数化”大语言模型与RAG的关系?
  • 集成电路学习:什么是Wi-Fi无线保真度
  • 「源力觉醒 创作者计划」_文心大模型 4.5 多模态实测:开源加速 AI 普惠落地
  • LeetCode 283 - 移动零
  • 【面试】软件测试面试题
  • mangoDB面试题及详细答案 117道(026-050)
  • Netty中InternalThreadLocalMap的作用
  • 【C++算法】72.队列+宽搜_二叉树的最大宽度
  • React函数组件的“生活管家“——useEffect Hook详解
  • 【Linux】初识make/makefile
  • sqLite 数据库 (2):如何复制一张表,事务,聚合函数,分组加过滤,列约束,多表查询,视图,触发器与日志管理,创建索引
  • 【MySQL基础篇】:MySQL表的约束常用类型以及实战示例
  • 15-C语言:第15~16天笔记
  • dubbo应用之3.0新特性(响应式编程)(2)
  • 《剑指offer》-算法篇-位运算
  • window weblogic 解锁
  • Object.freeze() 深度解析:不可变性的实现与实战指南
  • 第4章唯一ID生成器——4.5 美团点评开源方案Leaf