C# ArrayList 类
|
admin
2024年2月8日 10:55
本文热度 548
|
摘要
ArrayList是一种泛型类,用于在C#中创建动态数组。它提供了很多有用的方法,可以用于添加,插入或移除元素。由于ArrayList类是在System.Collections命名空间下定义的,因此在使用它之前必须加上这个命名空间。ArrayList是.NET Framework中最常用的动态数组类之一,它是使用最广泛的类之一。
ArrayList的一个重要特点是它是动态数组。这意味着当我们向ArrayList中添加元素时,它会自动调整大小以适应这些元素。如果添加的元素超出了当前数组的大小,ArrayList会创建一个新的数组并将元素复制到新数组中。这种机制使得ArrayList可以适应各种数据集,并且可以避免不必要的内存分配。
在ArrayList中,我们可以使用以下方法添加,插入或移除元素:
除此之外,ArrayList还提供了许多其他有用的方法,例如Find和IndexOf,这些方法可以用于查找元素在ArrayList中的位置。
虽然ArrayList是一种强大的数组类,但是它也有一些缺点。例如,在添加或移除元素时,ArrayList需要调整大小,这可能会导致一些性能问题。此外,在访问ArrayList中的元素时,我们只能一次获取或设置一个元素的值。这可能会导致一些不必要的复制和比较操作,从而影响程序的性能。
ArrayList是一种非常有用的类,可以帮助我们创建动态数组。尽管它有一些缺点,但是在大多数情况下,ArrayList都是一种非常实用的工具,可以提高程序的效率和灵活性。
正文
不建议将类用于 ArrayList
新开发。 相反,我们建议使用泛型 List<T> 类。 该 ArrayList 类旨在保存对象的异类集合。 但是,它并不总是提供最佳性能。 建议执行以下操作:
属性
|
|
---|
Capacity | 获取或设置 ArrayList 可包含的元素数。 |
Count | 获取 ArrayList 中实际包含的元素数。 |
IsFixedSize | 获取一个值,该值指示 ArrayList 是否具有固定大小。 |
IsReadOnly | 获取一个值,该值指示 ArrayList 是否为只读。 |
IsSynchronized | 获取一个值,该值指示是否同步对 ArrayList 的访问(线程安全)。 |
Item[Int32] | 获取或设置指定索引处的元素。 |
SyncRoot | 获取可用于同步对 ArrayList 的访问的对象。 |
方法
|
|
---|
Adapter(IList) | 为特定 IList 创建 ArrayList 包装。 |
Add(Object) | 将对象添加到 ArrayList 的结尾处。 |
AddRange(ICollection) | 将 ICollection 的元素添加到 ArrayList 的末尾。 |
BinarySearch(Int32, Int32, Object, IComparer) | 使用指定的比较器在已排序 ArrayList 的某个元素范围中搜索元素,并返回该元素从零开始的索引。 |
BinarySearch(Object) | 使用默认的比较器在整个已排序的 ArrayList 中搜索元素,并返回该元素从零开始的索引。 |
BinarySearch(Object, IComparer) | 使用指定的比较器在整个已排序的 ArrayList 中搜索元素,并返回该元素从零开始的索引。 |
Clear() | 从 ArrayList 中移除所有元素。 |
Clone() | 创建 ArrayList 的浅表副本。 |
Contains(Object) | 确定某元素是否在 ArrayList 中。 |
CopyTo(Array) | 从目标数组的开头开始,将整个 ArrayList 复制到兼容的一维 Array。 |
CopyTo(Array, Int32) | 从目标数组的指定索引处开始将整个 ArrayList 复制到兼容的一维 Array。 |
CopyTo(Int32, Array, Int32, Int32) | 从目标数组的指定索引处开始,将 ArrayList 中某个范围的元素复制到兼容的一维数组 Array。 |
Equals(Object) | 确定指定对象是否等于当前对象。 (继承自 Object) |
FixedSize(ArrayList) | 返回具有固定大小的 ArrayList 包装。 |
FixedSize(IList) | 返回具有固定大小的 IList 包装。 |
GetEnumerator() | 返回用于整个 ArrayList 的枚举数。 |
GetEnumerator(Int32, Int32) | 返回 ArrayList 中元素范围的枚举器。 |
GetRange(Int32, Int32) | 返回一个 ArrayList,它表示源 ArrayList 中的元素子集。 |
IndexOf(Object) | 搜索指定的 Object,并返回整个 ArrayList 中第一个匹配项的从零开始的索引。 |
IndexOf(Object, Int32) | 搜索指定的 Object,并返回 ArrayList 中从指定索引到最后一个元素的元素范围中第一个匹配项的从零开始索引。 |
IndexOf(Object, Int32, Int32) | 搜索指定的 Object,并返回 ArrayList 中从指定索引开始,并包含指定元素数的元素范围中第一个匹配项的从零开始的索引。 |
Insert(Int32, Object) | 将元素插入 ArrayList 的指定索引处。 |
InsertRange(Int32, ICollection) | 将集合中的元素插入 ArrayList 的指定索引处。 |
LastIndexOf(Object) | 在整个 ArrayList 中搜索指定的 Object,并返回最后一个匹配项的从零开始的索引。 |
LastIndexOf(Object, Int32) | 搜索指定的 Object,并返回 ArrayList 中从第一个元素到指定索引这部分元素中最后一个匹配项的从零开始索引。 |
LastIndexOf(Object, Int32, Int32) | 搜索指定的 Object,并返回 ArrayList 中到指定索引为止包含指定元素数的这部分元素中最后一个匹配项的从零开始的索引。 |
ReadOnly(ArrayList) | 返回只读的 ArrayList 包装。 |
ReadOnly(IList) | 返回只读的 IList 包装。 |
Remove(Object) | 从 ArrayList 中移除特定对象的第一个匹配项。 |
RemoveAt(Int32) | 移除 ArrayList 的指定索引处的元素。 |
RemoveRange(Int32, Int32) | 从 ArrayList 中移除一系列元素。 |
Repeat(Object, Int32) | 返回 ArrayList,其元素是指定值的副本。 |
Reverse() | 将整个 ArrayList 中元素的顺序反转。 |
Reverse(Int32, Int32) | 将指定范围中元素的顺序反转。 |
SetRange(Int32, ICollection) | 复制 ArrayList 中一个子集合的元素。 |
Sort() | 对整个 ArrayList 中的元素进行排序。 |
Sort(IComparer) | 使用指定的比较器对整个 ArrayList 中的元素进行排序。 |
Sort(Int32, Int32, IComparer) | 使用指定的比较器对 ArrayList 中某个范围内的元素进行排序。 |
Synchronized(ArrayList) | 返回同步的(线程安全)ArrayList 包装器。 |
Synchronized(IList) | 返回同步的(线程安全)IList 包装器。 |
ToArray() | 将 ArrayList 的元素复制到新 Object 数组中。 |
ToArray(Type) | 将 ArrayList 的元素复制到新的指定元素类型数组中。 |
ArrayList元素的添加
private void btnAdd_Click(object sender, EventArgs e)
{
ArrayList array = new ArrayList();
array.Add(1);
array.Add("张飞");
array.Add(10.4f);
string[] ary1 = { "hello", "world" };
array.AddRange(ary1);
foreach (var item in array)
{
MessageBox.Show(item.ToString());
}
}
ArrayList元素的删除
private void btnDelete_Click(object sender, EventArgs e)
{
array.RemoveAt(2);
array.Remove("张飞");//用于移除指定元素值的第一个匹配集合元素
foreach (var item in array)
{
MessageBox.Show(item.ToString());
}
array.RemoveRange(1, 2);//从1开始,删除2个元素
array.Clear();//删除所有
}
ArrayList元素的查找
private void btnSearch_Click(object sender, EventArgs e)
{
int idx = array.IndexOf(txtSearch.Text);
MessageBox.Show(idx.ToString());
idx = array.LastIndexOf(txtSearch.Text);
MessageBox.Show(idx.ToString());
}
是否包括:
var ret = array.Contains(10.4f);
MessageBox.Show(ret.ToString());
该文章在 2024/2/8 10:55:22 编辑过