Scala Iterable的"toMap"方法返回什么样的Map?

Bro*_*mer 9 scala

一个斯卡拉的Iterable有一个toMap方法,它返回一个地图.这张地图支持的是什么?它的性能特征是什么?

有没有办法指定toMap应该返回一个HashMap

axe*_*l22 13

它返回一个immutable.HashMap,它实际上是一个映射trie不可变哈希数组.该数据结构本质上是多级散列表和trie之间的混合.哈希数组映射trie的最坏情况复杂度O(log n)适用于所有操作,尽管具有非常低的常数因子 - 哈希数组映射的尝试非常浅,并且通常只有少数间接.您可以在此处阅读有关性能特征的更多信息,或运行几个微型计算机.在大多数情况下,性能是可以接受的

toMap始终返回一个散列索引树.如果你想要一个可变的哈希表,那么这样做:

import collection._
mutable.HashMap() ++= xs
Run Code Online (Sandbox Code Playgroud)

代替:

xs.toMap
Run Code Online (Sandbox Code Playgroud)

  • 如果它是语言的保证,那么它将成为合同的一部分.`toMap`将被声明为返回`immutable.HashMap`.由于它不是合同的一部分,我们可以假设Scala语言的创建者将确保返回标准库中可用的最佳通用映射实现.如果出现比"immutable.HashMap"更好的东西,它们可能会改变`toMap`返回的内容. (2认同)