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

前端之家收集整理的这篇文章主要介绍了F#:Dictionary,Hashtable和Map之间的区别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是.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#交互式窗口中使用它来测试异步工作流程.

猜你在找的Java相关文章