Share ALL

共同提高

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  转:常用集合类性能、优缺点比较


我们将对 数组,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 无法实现的,所以为其创建所消耗的资源也是最多的.

    本文只是 简单的总结了上述几种常用集合类的特点,希望对大家用所帮助!

posted on 2008-06-02 10:38  大-可-乐  阅读(1144)  评论(0编辑  收藏  举报