zoukankan      html  css  js  c++  java
  • 常用集合类性能、优缺点比较

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

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

  • 相关阅读:
    [SHOI2014]信号增幅仪
    [SDOI2016]征途
    Luogu P3226 [HNOI2012]集合选数
    Comet OJ C1076 [Contest #4]求和
    Luogu P2657 [SCOI2009]windy数
    Luogu P1864 [NOI2009]二叉查找树
    UVA10559 Blocks
    Luogu P1880 [NOI1995]石子合并
    简单DP
    CF1097F Alex and a TV Show
  • 原文地址:https://www.cnblogs.com/eoiioe/p/1140806.html
Copyright © 2011-2022 走看看