Dictionary和List遍历速度比较

Dictionary的遍历速度和List的比较

1.概念

    List<T>是T的集合

    Dictionary<T1, T2>字典,包含Key和Value,通过Key可以快速查找到Value

2.Dictionary<T1, T2>和List的简单存储原理

    Dictionary<T1, T2>根据Key通过Hash计算得到应该存放的虚拟内存地址,当按照Key进行查找的时候,首先就是根据Key计算出其存放的虚拟内存地址,找到对应的数据。

    List<T>在内存中是连续的

3.根据存储原理,分析

    在宏观上Dictionary<T1, T2>的内存地址不是连续的,虽然微软对这个算法进行了很大的优化,但是正因为这种不连续,在遍历的时候,Dictionary会产生大量的内存换页的操作,然而List只需要进行最少的内存换页即可。这就是List和Dictionary在遍历时效率差异的根本原因。

4.不建议遍历Dictionary

    Dictionary的遍历效率很差,不建议进行遍历Dictionary。

    Dictionary除了要储存的Value之外,还需要一个Key,造成了内存空间的双倍浪费。

    从内存空间来说,List只需要在原有的地址基础上向后延续即可,然而Dictionary需要经过复杂的Hash计算,造成性能上的损耗。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 最近金三银四,相信不少朋友都在跃跃欲动,看看市场机会,此份Java整理是平安科技(陆金所)项目组大神整理的J...
    苏村的南哥阅读 826评论 0 2
  • 三大框架MVC(Model、View、Controller)参考image原理:view层发送指令到control...
    鹤书嗣音阅读 413评论 2 0
  • String,Stringbuilder和Stringbuffer的区别 String底层使用一个不可变的字符数组...
    SuperCR7阅读 163评论 0 0
  • Q:面向对象编程的四大特性及其含义? 技术点:面向对象编程特点思路:分条简述每个特性的含义参考回答:抽象:对现实世...
    Typist夫少阅读 621评论 0 3
  • 夜莺2517阅读 127,761评论 1 9