Dictionary 描述

字典 Dictionary 通过 Hash 桶算法进行O(1)查找数据,在 Hash 碰撞达到一定次数后会自动进行 Resize,也会在数组大小不足的时候会自动进行Resize。

如果自定义 Key 没有重写 GetHashCode 和 Equal 方法,则会调用基类 Object 的方法。

  • 如果自定义 Key 是 Struct 的话,则会出现装箱操作导致 GC Alloc。(旧版本的 Unity 支持 C# 不高,因此默认 Comparer 没有对 Enum 进行处理,导致 Enum 作为 Key 也会造成 GC)

  • 导致相同数据的两个对象判定不相等。

Comparer 构建

  • 在初始化 Dictionary 的时候需要构造对应的 Comparer。

  • 如果没有传入 Comparer 的时候,会根据 Key 的类型自动创建 Comparer。

  • 其中进行插入,查找等操作时候,通过调用 Comparer 的 GetHashCode 和 Equal 方法来检查对应桶是否存在对应Key。

最新文章

  1. NodeJS 初体验
  2. [OrangePi] Building the system
  3. ios AudioQueueStart returns -50 录音失败问题
  4. R编程感悟
  5. Objective-C 学习记录--toches、Motion/Size/Rect/Point/CGFloat/protocol
  6. JavaScript要点 (三) 保留关键字
  7. Python之创建tuple
  8. hdu2488 dfs
  9. add BOM to fix UTF-8 in Excel
  10. OSGI学习总结
  11. iOS 要定义自己的导航栏button样式Button Image 执行出彩是不一样的与原来的颜色 -解
  12. JavaScript一个whenReady函数,监听及注册事件
  13. ssm web.xml配置解析
  14. [ExtJS5学习笔记]第七节 Extjs5的组件components及其模板事件方法学习
  15. 微信小程序入门三实战
  16. linux中sogou输入法崩溃重启
  17. 关于 JavaScript 的 null 和 undefined,判断 null 的真实类型
  18. MapperScan和ComponentScan同时使用问题
  19. eclipse中一些常见svn图标的含义
  20. mysql-8.0.12-winx64 解压版安装(转)

热门文章

  1. 使用jQuery快速高效制作网页交互特效---JavaScript对象及初始面向对象
  2. Laravel 中使用 Repository 模式
  3. C/C++ -- 判断字符串中存在中文
  4. JavaScript 字符串转数字(整数,浮点数,进制转换)
  5. [bzoj 4887] [Tjoi2017]可乐
  6. mysql插入数据自动生成主键uuid
  7. Java 面向对象(六)
  8. Echarts 常用API之action行为
  9. arcgis python 参数类型和含义
  10. 使用Expression动态创建lambda表达式