摘要
ArrayList是一種泛型類,用于在C#中創(chuàng)建動態(tài)數(shù)組。它提供了很多有用的方法,可以用于添加,插入或移除元素。由于ArrayList類是在System.Collections命名空間下定義的,因此在使用它之前必須加上這個命名空間。ArrayList是.NET Framework中最常用的動態(tài)數(shù)組類之一,它是使用最廣泛的類之一。
ArrayList的一個重要特點是它是動態(tài)數(shù)組。這意味著當(dāng)我們向ArrayList中添加元素時,它會自動調(diào)整大小以適應(yīng)這些元素。如果添加的元素超出了當(dāng)前數(shù)組的大小,ArrayList會創(chuàng)建一個新的數(shù)組并將元素復(fù)制到新數(shù)組中。這種機制使得ArrayList可以適應(yīng)各種數(shù)據(jù)集,并且可以避免不必要的內(nèi)存分配。
在ArrayList中,我們可以使用以下方法添加,插入或移除元素:
除此之外,ArrayList還提供了許多其他有用的方法,例如Find和IndexOf,這些方法可以用于查找元素在ArrayList中的位置。
雖然ArrayList是一種強大的數(shù)組類,但是它也有一些缺點。例如,在添加或移除元素時,ArrayList需要調(diào)整大小,這可能會導(dǎo)致一些性能問題。此外,在訪問ArrayList中的元素時,我們只能一次獲取或設(shè)置一個元素的值。這可能會導(dǎo)致一些不必要的復(fù)制和比較操作,從而影響程序的性能。
ArrayList是一種非常有用的類,可以幫助我們創(chuàng)建動態(tài)數(shù)組。盡管它有一些缺點,但是在大多數(shù)情況下,ArrayList都是一種非常實用的工具,可以提高程序的效率和靈活性。
正文
不建議將類用于 ArrayList
新開發(fā)。 相反,我們建議使用泛型 List<T> 類。 該 ArrayList 類旨在保存對象的異類集合。 但是,它并不總是提供最佳性能。 建議執(zhí)行以下操作:
屬性
|
|
---|
Capacity | 獲取或設(shè)置 ArrayList 可包含的元素數(shù)。 |
Count | 獲取 ArrayList 中實際包含的元素數(shù)。 |
IsFixedSize | 獲取一個值,該值指示 ArrayList 是否具有固定大小。 |
IsReadOnly | 獲取一個值,該值指示 ArrayList 是否為只讀。 |
IsSynchronized | 獲取一個值,該值指示是否同步對 ArrayList 的訪問(線程安全)。 |
Item[Int32] | 獲取或設(shè)置指定索引處的元素。 |
SyncRoot | 獲取可用于同步對 ArrayList 的訪問的對象。 |
方法
|
|
---|
Adapter(IList) | 為特定 IList 創(chuàng)建 ArrayList 包裝。 |
Add(Object) | 將對象添加到 ArrayList 的結(jié)尾處。 |
AddRange(ICollection) | 將 ICollection 的元素添加到 ArrayList 的末尾。 |
BinarySearch(Int32, Int32, Object, IComparer) | 使用指定的比較器在已排序 ArrayList 的某個元素范圍中搜索元素,并返回該元素從零開始的索引。 |
BinarySearch(Object) | 使用默認的比較器在整個已排序的 ArrayList 中搜索元素,并返回該元素從零開始的索引。 |
BinarySearch(Object, IComparer) | 使用指定的比較器在整個已排序的 ArrayList 中搜索元素,并返回該元素從零開始的索引。 |
Clear() | 從 ArrayList 中移除所有元素。 |
Clone() | 創(chuàng)建 ArrayList 的淺表副本。 |
Contains(Object) | 確定某元素是否在 ArrayList 中。 |
CopyTo(Array) | 從目標(biāo)數(shù)組的開頭開始,將整個 ArrayList 復(fù)制到兼容的一維 Array。 |
CopyTo(Array, Int32) | 從目標(biāo)數(shù)組的指定索引處開始將整個 ArrayList 復(fù)制到兼容的一維 Array。 |
CopyTo(Int32, Array, Int32, Int32) | 從目標(biāo)數(shù)組的指定索引處開始,將 ArrayList 中某個范圍的元素復(fù)制到兼容的一維數(shù)組 Array。 |
Equals(Object) | 確定指定對象是否等于當(dāng)前對象。 (繼承自 Object) |
FixedSize(ArrayList) | 返回具有固定大小的 ArrayList 包裝。 |
FixedSize(IList) | 返回具有固定大小的 IList 包裝。 |
GetEnumerator() | 返回用于整個 ArrayList 的枚舉數(shù)。 |
GetEnumerator(Int32, Int32) | 返回 ArrayList 中元素范圍的枚舉器。 |
GetRange(Int32, Int32) | 返回一個 ArrayList,它表示源 ArrayList 中的元素子集。 |
IndexOf(Object) | 搜索指定的 Object,并返回整個 ArrayList 中第一個匹配項的從零開始的索引。 |
IndexOf(Object, Int32) | 搜索指定的 Object,并返回 ArrayList 中從指定索引到最后一個元素的元素范圍中第一個匹配項的從零開始索引。 |
IndexOf(Object, Int32, Int32) | 搜索指定的 Object,并返回 ArrayList 中從指定索引開始,并包含指定元素數(shù)的元素范圍中第一個匹配項的從零開始的索引。 |
Insert(Int32, Object) | 將元素插入 ArrayList 的指定索引處。 |
InsertRange(Int32, ICollection) | 將集合中的元素插入 ArrayList 的指定索引處。 |
LastIndexOf(Object) | 在整個 ArrayList 中搜索指定的 Object,并返回最后一個匹配項的從零開始的索引。 |
LastIndexOf(Object, Int32) | 搜索指定的 Object,并返回 ArrayList 中從第一個元素到指定索引這部分元素中最后一個匹配項的從零開始索引。 |
LastIndexOf(Object, Int32, Int32) | 搜索指定的 Object,并返回 ArrayList 中到指定索引為止包含指定元素數(shù)的這部分元素中最后一個匹配項的從零開始的索引。 |
ReadOnly(ArrayList) | 返回只讀的 ArrayList 包裝。 |
ReadOnly(IList) | 返回只讀的 IList 包裝。 |
Remove(Object) | 從 ArrayList 中移除特定對象的第一個匹配項。 |
RemoveAt(Int32) | 移除 ArrayList 的指定索引處的元素。 |
RemoveRange(Int32, Int32) | 從 ArrayList 中移除一系列元素。 |
Repeat(Object, Int32) | 返回 ArrayList,其元素是指定值的副本。 |
Reverse() | 將整個 ArrayList 中元素的順序反轉(zhuǎn)。 |
Reverse(Int32, Int32) | 將指定范圍中元素的順序反轉(zhuǎn)。 |
SetRange(Int32, ICollection) | 復(fù)制 ArrayList 中一個子集合的元素。 |
Sort() | 對整個 ArrayList 中的元素進行排序。 |
Sort(IComparer) | 使用指定的比較器對整個 ArrayList 中的元素進行排序。 |
Sort(Int32, Int32, IComparer) | 使用指定的比較器對 ArrayList 中某個范圍內(nèi)的元素進行排序。 |
Synchronized(ArrayList) | 返回同步的(線程安全)ArrayList 包裝器。 |
Synchronized(IList) | 返回同步的(線程安全)IList 包裝器。 |
ToArray() | 將 ArrayList 的元素復(fù)制到新 Object 數(shù)組中。 |
ToArray(Type) | 將 ArrayList 的元素復(fù)制到新的指定元素類型數(shù)組中。 |
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 編輯過