[C#.NET][VB.NET] 一般集合 - ArrayList 類別 排序
比較項目 |
||
初始資料型態 |
依使用者決定 |
一開始都是Object |
元素資料型態 |
所有元素都是同一種 |
任何Object可接受的型態 |
空間配置 |
使用Redim改變 |
自行動態配置 |
支援移除元素 |
無 |
有 |
支援插入元素 |
無 |
有 |
記憶體空間 |
小 |
大 |
使用時機 |
已知資料型態及元素數量 |
未知資料型態及元素數量 |
.NET提供了一個相當好用的ArrayList類別,它可以儲存任何型别的資料,它跟Array類別的差異就如上表所述,使用者可以決定要使用哪一種,.NET的陣列索引值(Index)似乎無法像VB6那樣可以從1開始,對陣列很熟的朋友們,就跳過這一篇吧。
程式開始前請先引用System.Collection
如何加入資料
1.引用類別
//引用類別
ArrayList myList = new ArrayList();
2.使用Add加入資料
//加入資料
myList.Add("Zero");
myList.Add("First");
myList.Add("Second");
myList.Add("Third");
myList.Add("Fourth");
什麼!!!簡單到不行
如何逐一處理陣列
用迴圈逐一處理XD
//逐一處理陣列資料
foreach (string myItem in myList)
{
Console.WriteLine("未排序: {0}", myItem);
}
//逐一處理陣列資料
for (int i = 0; i < myList.Count; ++i)
{
Console.WriteLine("未排序: {0}",myList[i]);
}
foreach聽說效能比較好,如果可以就用它。
如何移除陣列中的項目
//依索引值移除一筆
myList.RemoveAt(0);
//依索引值移除多筆
myList.RemoveRange(0,4);
如何排序(由小到大)
//排序(由小到大)
myList.Sort();
foreach (string item in myList)
{
Console.WriteLine("已排序: {0}", item);
}
如何排序(由大到小),實作IComparer
1.實作IComparer
public class DeComparer : IComparer
{
CaseInsensitiveComparer myComparer = new CaseInsensitiveComparer();
public int Compare(object x, object y)
{
return myComparer.Compare(y, x);
}
}
2.引用類別
//排序(由大到小)
myList.Sort(new DeComparer());
PS1.還有好多好多的方法……寫不完的,有需要再去查MSDN就可以了http://msdn.microsoft.com/zh-tw/library/system.collections.arraylist%28VS.80%29.aspx
PS2.Add與AddRange方法,都是將資料加入陣列的尾端。
PS3.利用索引值指定位位置,該位置的舊資料將會被覆蓋成新資料,而不是插入一個新索引。
//直接指定
myList[7] = "指定會蓋過原本的資料";
範例包含VB與C#
範例下載:陣列ArrayList.rar
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET