• hashtable,dictionary 从原理上说说有什么异同,哪个性能高一些


    hashtable里存的对象全部是object类型 ,所有对象存进去都被转成object类型,读取出来每次都需要转换类型,hashtable对存入的类型没有限制 , 因此在读取转换类型时容易出错,
    dictionary只能存入定义时指定的类型,而且不像hashtable会把类型转换成object,存取起来比前者方便,效率更高,因为不需要转换类型,所以不会出现hashtable里的转换类型错误而报出程序异常.
          简单点说在 hashtable所有的对象基于HASH算法管理,但它是无类型信息的都只是一种类型:object,所以你可能需要进行一些类型转换的操作,即浪费时间又有可能出错。而且对于int,float这些值类型还需要进行装箱等操作,非常耗时。
          对于Dict <TKey,TValue>是由CLR支持泛型操作,速度快,没有类型转换操作,即完全是类型安全的。

          由于 Hashtable 和 Dictionary 同时存在, 在使用场景上必然存在选择性, 并不任何时刻都能相互替代.
        [1] 单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分.
        [2] 多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减.
        [3] Dictionary 有按插入顺序排列数据的特性 (注: 但当调用 Remove() 删除过节点后顺序被打乱), 因此在需要体现顺序的情境中使用 Dictionary 能获得一定方便.

    基本上是Dictionary 性能高些
  • 相关阅读:
    Using Project Custom Properties to replace all end point of test cases
    Jacoco Code coverage with Robotframework Maven pom.xml example
    Jacoco Code coverage with Robotframework
    Test coverage in a multi module Maven project
    如何让linux的history命令显示时间记录
    项目角色职责分配表
    Linux检查哪些thread在占用CPU
    soapui_mockservicerunner_script.sh
    Some api interface link of Soapui
    GlusterFS分布式存储系统
  • 原文地址:https://www.cnblogs.com/vihone/p/1543554.html
Copyright © 2020-2023  润新知