目录
ArrayList的特点
ArrayList 与普通数组的区别
使用示例: 普通数组 动态数组
主要方法和属性
属性: Count 获取动态数组的数据个数
读取某个位置的数据 // 索引
方法: Add 向集合末尾添加元素
Insert 在指定位置插入元素
IndexOf 查找指定的数据 并返回索引
Remove 移除指定的数据
RemoveAt 删除数组中指定索引位置的值
RemoveRange 删除数组中指定范围内的数据 从0开始 删除3个
Reverse 反转
Sort 使用默认的排序方式进行排序
Clear 清除列表 删除动态数组中所有的数据 Count重置为0
foreach遍历动态数组
Capacity 获取或设置集合的容量
注意事项
在 C# 中,ArrayList
是System.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);
注意事项
ArrayList
存储的是object
类型,因此值类型会发生装箱操作,可能影响性能- 从
ArrayList
中获取元素时需要进行显式类型转换 - 在.NET Framework 2.0 及以上版本中,建议使用泛型
List<T>
替代ArrayList
,因为List<T>
提供了类型安全和更好的性能
如果你需要类型安全且高性能的动态数组,应该优先考虑使用System.Collections.Generic
命名空间下的列表List<T>
。