加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

F#:Dictionary,Hashtable和Map之间的区别

发布时间:2020-12-14 05:12:22 所属栏目:Java 来源:网络整理
导读:我是.NET编程的新手.对不起,如果这个问题以前被问过. 我正在学习F#. Dictionary,Hashtable和Map之间有什么区别?什么时候应该使用每个? 我还有另一个题目中没有提到的问题.何时应用Async.RunSynchronously?这似乎与我自相矛盾,所以我确信我错过了一些东西.
我是.NET编程的新手.对不起,如果这个问题以前被问过.

我正在学习F#. Dictionary,Hashtable和Map之间有什么区别?什么时候应该使用每个?

我还有另一个题目中没有提到的问题.何时应用Async.RunSynchronously?这似乎与我自相矛盾,所以我确信我错过了一些东西.

解决方法

Dictionary,Hashtable和Map之间的选择取决于用例.然而,你应该知道每个人的特征.这不是一个详尽的列表,但只是一些关键的区别,你可能想从以下开始:

> Hashtable表示基于密钥的哈希码组织的密钥/值对的集合.这是一个来自.NET BCL的可变集合
>词典<>这是散列表的通用实现.也是.NET BCL的可变集合
> Map这是F#不可变类型.它是基于AVL树实现的,它是一个完全不同的具有不同性能特征和用例的数据结构.

如果您正在做许多写入,则哈希表集合的填充率比AVL树具有更好的填充率.

通过使用其键来从Dictionary获取值非常快,接近于O(1),因为Dictionary类被实现为哈希表.

F#映射被实现为不可变的AVL树,这是一种形成自平衡二叉树的高效数据结构. AVL树的效率是众所周知的,他们可以在O(log n)时间内在树中搜索,插入和删除元素,其中n是树中元素的数量.

对于地图使用情况,如果您有一组静态数据(如应用程序启动时加载的配置数据),则需要经常查询密钥,地图与任何其他在这种情况下,不变性可以确保静态数据不能被错误地修改,并且对性能影响不大,因为您一旦初始化就不需要将其变异.

Async.Run异步运行提供的异步计算并等待其结果.您可以在F#交互式窗口中使用它来测试异步工作流程.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读