2010年3月21日 星期日

.NET - 兩個陣列的合併

很常用到的功能,可以把兩個陣列合併成一個陣列,不需要寫一堆程式碼來合併。

合併的語法是利用陣列的聯集(Union)來做,
以下是a和b聯集
int[] c = a.Union(b).ToArray();

不過,因為是用集合的聯集來實作,所以遇到重複元素,就會被刪掉:
int[] a = { 1, 2, 3, 4, 5 };
int[] d = { 1, 6, 7, 8, 9 };
int[] e = a.Union(d).ToArray();

這樣的結果,最後就會是{1, 2, 3, 4, 5, 6, 7, 8, 9}
1只會出現一次而已。

同樣的,聯集也不會幫忙做排序。
int[] a = { 1, 2, 3, 4, 5 };
int[] f = { 7, 9, 8, 12, 6 };
int[] g = a.Union(f).ToArray();

這樣的結果,就會是:{1, 2, 3, 4, 5, 7, 9, 8, 12, 6}

簡單的說,集合該做的事情,不會少做。不該做的事情,也不會多做。

如果需要排序的話,簡單的元素,可以利用Array.Sort()來實作即可。
它會自動做由小而大排序。
Array.Sort(g);

若是自訂的類別,則必須要是IComparable的泛型實作才可以用。

程式最後的結果就像是

沒有留言:

張貼留言