我们将对 数组,Dictionary<>, HashTable,List<>,ArrayList 的性能和各自的优缺点做下比较?
一维数组是一个线性表,相对于其他集合类效率最高,但是使用起来也相对最不方便;
Dictionary<>泛型 是基于Hash算法的二维字典表,由于采用Hash算法,查找时间复杂度基本为O(1),相对于HashTable要快,因为使用泛型可以免去拆箱,装箱的操作;
HashTable 也是基于Hash算法的二维表,由于其Key和Value 都是object类型,其对数据的存取需要装箱,拆箱的操作,在没有引入泛型概念的VS2003中使用比较广泛,现在推荐使用Dictionary<>取代HashTable;
Dictionary<>泛型 和 HashTable 都是不定长的二维数组表,这意味着在不知道数组长度的情况下使用十分简单,并且具有许多方法,如ContainsKey,Add,Remove等,其检索数组的索引不再限于数组的数字索引,只要使用相应地Key的类型来索引就可以了,使用起来十分方便.
至于List<> 泛型在VS2005种推荐取代 ArrayList,其原因也是ArrayList要对每个元素都要进行拆箱,装箱操作.
List<> 和 ArrayList 如不经过排序处理,默认查找是使用顺序查找的,不如Hash 查找快,但其内置了很多方法,如排序等,是Dictionary<> 和 HashTable 无法实现的,所以为其创建所消耗的资源也是最多的.
本文只是 简单的总结了上述几种常用集合类的特点,希望对大家用所帮助!