上海出名软件公司面试题(hashtable,dictionary 从原理上说说有什么异同,哪个性能高一些?)
如题
------解决方案--------------------
------解决方案--------------------不懂,学习
------解决方案--------------------简单点说在 hashtable所有的对象基于HASH算法管理,但它是无类型信息的都只是一种类型:object,所以你可能需要进行一些类型转换的操作,即浪费时间又有可能出错。而且对于int,float这些值类型还需要进行装箱等操作,非常耗时。
对于Dict<TKey,TValue>是由CLR支持泛型操作,速度快,没有类型转换操作,即完全是类型安全的。
------解决方案--------------------你说的Dictionary 应该是.net2.0里的泛型类,性能肯定比只能放object的hashtable好些
------解决方案--------------------当然是泛型的性能高,毕竟是类型安全的,不用担心装箱与拆箱带来的性能损耗
------解决方案--------------------Dictionary支持泛型,Hashtable不支持
这是我知道的最大的区别
------解决方案--------------------dictionary性能高。
------解决方案--------------------
------解决方案--------------------由于 Hashtable 和 Dictionary 同时存在, 在使用场景上必然存在选择性, 并不任何时刻都能相互替代.
[1] 单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分.
[2] 多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减.
[3] Dictionary 有按插入顺序排列数据的特性 (注: 但当调用 Remove() 删除过节点后顺序被打乱), 因此在需要体现顺序的情境中使用 Dictionary 能获得一定方便.
------解决方案--------------------DIC厉害,新出来的东西呵呵
------解决方案--------------------
------解决方案--------------------Hashtable内存放的必须是Object,使用时需要强转类型。
Dictionary支持泛型,无需转换。
这就是区别,所以性能当然是Dictionary高