[C#.NET][VB.NET] 一般集合 - ArrayList 類別 排序

  • 49980
  • 0
  • C#
  • 2014-06-25

[C#.NET][VB.NET] 一般集合 - ArrayList 類別 排序

比較項目

Array

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

Image result for microsoft+mvp+logo