C#中集合ArrayList與Hashtable的使用
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的使用