1. 程式人生 > >C#中集合ArrayList與Hashtable的使用

C#中集合ArrayList與Hashtable的使用

mov eat 重新 hashtable table bject remove 第一個 循環

C#中集合ArrayList與Hashtable的使用

http://blog.csdn.net/linukey/article/details/42506819

ArrayList:

一.

註意事項:

1.可以指定ArrayList集合的初始大小

var list = new ArrayList(10);//容納10個元素

若不指定大小,則默認大小為0,添加一個後為4,然後以倍數遞增。

2.ArrayList是Array的復雜版本,ArrayList內部封裝了一個Object類型的數組,從一般的意義來說,它和數組沒有本質的差別,甚至於ArrayList的許多方法,如Index、IndexOf、Contains、Sort等都是在內部數組的基礎上直接調用Array的對應方法。

3.內部的Object類型的影響 : 對於一般的引用類型來說,這部分的影響不是很大,但是對於值類型來說,往ArrayList裏面添加和修改元素,都會引起裝箱和拆箱的操作,頻繁的操作可能會影響一部分效率。此時應該用泛型類替代ArrayList。

4.數組擴容 :這是對ArrayList效率影響比較大的一個因素。 每當執行Add、AddRange、Insert、InsertRange等添加元素的方法,都會檢查內部數組的容量是否不夠了,如果不夠,它就會以當前容量的兩倍來重新構建一個數組,將舊元素Copy到新數組中,然後丟棄舊數組,在這個臨界點的擴容操作,應該來說是比較影響效率的。

5.頻繁的調用IndexOf、Contains等方法(Sort、BinarySearch等方法經過優化,不在此列)引起的效率損失,首先,我們要明確一點,ArrayList是動態數組,它不包括通過Key或者Value快速訪問的算法,所以實際上調用IndexOf、Contains等方法是執行的簡單的循環來查找元素,所以頻繁的調用此類方法並不比你自己寫循環並且稍作優化來的快,如果有這方面的要求,建議使用Hashtable或SortedList等鍵值對的集合。

二:

屬性及方法

屬性:

1.Count:目前ArrayList包含的元素的數量,這個屬性是只讀的。

2.Capacity:目前ArrayList能夠包含的最大數量,可以手動的設置 這個屬性,但是當設置為小於Count值的時候會引發一個異常。

方法:

1.Int Add(object value);

用於添加一個元素到當前列表的末尾。

2.Int AddRange(object value);

用於添加一個集合或數組到當前列表的末尾。

3.void Remove(object obj);

用於刪除一個元素,通過元素本身的引用來刪除。

4.void RemoveAt(int index);

用於刪除一個元素,通過索引值來刪除。

5.void RemoveRange(int index, int count);

用於刪除一個集合或數組,通過指定開始的索引和刪除的數量來刪除。

6.void Insert(int index, object value)

用於添加一個元素到制定位置,列表後面的元素依次往後移動。

7.void InsetRange(int index, Icollection collec)

用於從指定位置添加一個集合或數組

8.void Sort()

對集合中的元素進行排序

9.void Reverse();

將ArrayList或它的一vufenzhong元素的順序反轉

10. Int IndexOf(object);

Int IndexOf(object, int);

Int IndexOf(object, int, int);

返回ArrayList或它的一部分中某個值的第一個匹配項的從零開始的索引。沒有找到返回-1。

11.Int LastIndexOf(object)

Int LastIndexOf(object, int)

Int LastIndexOf(object, int, int)

返回ArrayList或它的一部分中某個值得最後一個匹配項的從零開始的索引。沒找到返回-1

12.void TrimSize()

用於將ArrayList固定到實際元素的大小,當動態數組元素確定不再添加的時候,可以調用這個方法來釋放空余的內存

13.void Clear()

清空ArrayList中的所有元素

14.Array ToArray()

這個方法把ArrayList中的元素copy到一個新的數組中

Hashtable

常用方法:

1.在哈希表中添加一個keyvalue鍵值對:HashtableObject.Add(key,value);

2.在哈希表中去除某個keyvalue鍵值對:HashtableObject.Remove(key);

3.從哈希表中移除所有元素: HashtableObject.Clear();

4.判斷哈希表是否包含特定鍵key: HashtableObject.Contains(key);

C#中集合ArrayList與Hashtable的使用