在C#中,ArrayList 是一個非泛型的對象集合,其大小會動態(tài)增加。它與Array相同,只是它的大小是動態(tài)增加的。
一個ArrayList可以用來添加未知數(shù)據(jù),可能你并不知道的類型和數(shù)據(jù)的大小。
System.Collections 命名空間中包含的 ArrayList 類。ArrayList使用 new 關(guān)鍵字創(chuàng)建對象。
using System.Collections; ArrayList arlist = new ArrayList(); // 或者 var arlist = new ArrayList(); // 推薦
使用Add()方法或?qū)ο蟪跏贾翟O(shè)定項語法在 ArrayList 中添加元素。
ArrayList 可以包含多個 null 和 重復(fù)值。
// 使用ArrayList.Add()方法添加元素 var arlist1 = new ArrayList(); arlist1.Add(1); arlist1.Add("Bill"); arlist1.Add(" "); arlist1.Add(true); arlist1.Add(4.5); arlist1.Add(null); // 使用對象初始化語法添加元素 var arlist2 = new ArrayList() { 2, "Steve", " ", true, 4.5, null };
使用 AddRange (ICollection c)方法在 ArrayList 中添加一個完整的 Array、 HashTable、 SortedList、 ArrayList、 BitArray、 Queue 和 Stack。
var arlist1 = new ArrayList(); var arlist2 = new ArrayList() { 1, "Bill", " ", true, 4.5, null }; int[] arr = { 100, 200, 300, 400 }; Queue myQ = new Queue(); myQ.Enqueue("Hello"); myQ.Enqueue("World!"); arlist1.AddRange(arlist2); //在arraylist中添加arraylist arlist1.AddRange(arr); //在arraylist中添加數(shù)組 arlist1.AddRange(myQ); //在arraylist中添加隊列
本ArrayList類實現(xiàn)了IList接口。因此,可以像數(shù)組一樣使用索引器訪問元素。索引從零開始,并為每個后續(xù)元素增加 1。
需要顯式轉(zhuǎn)換為適當(dāng)?shù)念愋?,或使?var 變量。
var arlist = new ArrayList() { 1, "Bill", 300, 4.5f }; //使用索引器訪問單個項目 int firstElement = (int) arlist[0]; //返回1 string secondElement = (string) arlist[1]; //返回“賬單”"Bill" //int secondElement = (int) arlist[1]; //錯誤:無法將字符串覆蓋為int //使用var關(guān)鍵字而不進行顯式轉(zhuǎn)換 var firstElement = arlist[0]; //返回1 var secondElement = arlist[1]; //返回“賬單”"Bill" //var fifthElement = arlist[5]; //錯誤:索引超出范圍 //更新元素 arlist[0] = "Steve"; arlist[1] = 100; //arlist[5] = 500; //錯誤:索引超出范圍
ArrayList實現(xiàn)實現(xiàn)了ICollection接口,該接口支持集合類型的迭代。因此,使用foreach和for循環(huán)迭代ArrayList。ArrayList 的 Count 屬性返回 ArrayList 中的元素總數(shù)。
ArrayList arlist = new ArrayList() { 1, "Bill", 300, 4.5F }; foreach (var item in arlist) Console.Write(item + ", "); //輸出:1,Bill,300,4.5, for(int i = 0 ; i < arlist.Count; i++) Console.Write(arlist[i] + ", "); //輸出:1,Bill,300,4.5,
使用Insert()方法將指定索引處的元素插入到 ArrayList。
語法:
void Insert(int index, Object value)
ArrayList arlist = new ArrayList() { 1, "Bill", 300, 4.5f }; arlist.Insert(1, "Second Item"); foreach (var val in arlist) Console.WriteLine(val);
使用InsertRange()方法將集合插入ArrayList指定索引中的。
語法:
void InsertRange(int index, ICollection c)
ArrayList arlist1 = new ArrayList() { 100, 200, 600 }; ArrayList arlist2 = new ArrayList() { 300, 400, 500 }; arlist1.InsertRange(2, arlist2); foreach(var item in arlist1) Console.Write(item + ", "); //輸出:100、200、300、400、500、600,
使用 Remove(),RemoveAt()或RemoveRange方法從 ArrayList 中移除元素。
ArrayList arList = new ArrayList() { 1, null, "Bill", 300, " ", 4.5f, 300, }; arList.Remove(null); //刪除首次出現(xiàn)的null arList.RemoveAt(4); //刪除索引4處的元素 arList.RemoveRange(0, 2);//從第一個項目(索引為0)刪除兩個元素
使用Contains()方法確定指定的元素是否存在于中ArrayList。如果存在則返回true,否則返回false。
ArrayList arList = new ArrayList() { 1, "Bill", 300, 4.5f, 300 }; Console.WriteLine(arList.Contains(300)); // true Console.WriteLine(arList.Contains("Bill")); // true Console.WriteLine(arList.Contains(10)); // false Console.WriteLine(arList.Contains("Steve")); // false
ArrayList由于性能問題, 不建議使用該類。而是,用于List<object>存儲異構(gòu)對象。要存儲相同數(shù)據(jù)類型的數(shù)據(jù),請使用泛型 List<T>。
下圖說明了ArrayList該類。
屬性 | 描述 |
---|---|
Capacity | 獲取或設(shè)置ArrayList可以包含的元素數(shù)。 |
Count | 獲取ArrayList中實際包含的元素數(shù)。 |
IsFixedSize | 獲取一個值,該值指示 ArrayList 是否具有固定大小。 |
IsReadOnly | 獲取一個值,該值指示ArrayList是否為只讀。 |
Item | 獲取或設(shè)置指定索引處的元素。 |
方法 | 描述 |
---|---|
Add()/AddRange() | Add ()方法在 ArrayList 的末尾添加單個元素。 AddRange ()方法將指定集合中的所有元素添加到 ArrayList 中。 |
Insert()/InsertRange() | Insert ()方法在 ArrayList 中的指定索引處插入單個元素。 InsertRange ()方法從 ArrayList 中的指定索引開始插入指定集合的所有元素。 |
Remove()/RemoveRange() | Remove ()方法從 ArrayList 中刪除指定的元素。 RemoveRange ()方法從 ArrayList 中刪除指定范圍的元素。 |
RemoveAt() | 從 ArrayList 中移除指定索引處的元素。 |
Sort() | 對 ArrayList 的所有元素排序。 |
Reverse() | 反轉(zhuǎn)整個 ArrayList 中元素的順序。 |
Contains | 檢查指定的元素是否存在于 ArrayList 中。如果存在則返回 true,否則返回 false。 |
Clear | 移除 ArrayList 中的所有元素。 |
CopyTo | 將所有元素或元素范圍復(fù)制到可編譯數(shù)組。 |
GetRange | 從 ArrayList 返回指定索引中指定的元素數(shù)。 |
IndexOf | 搜索指定的元素,如果找到,則返回從零開始的索引。如果找不到元素,則返回-1。 |
ToArray | 從ArrayList返回 數(shù)組。 |