什么区别List.empty,List()和new List()?我什么时候应该使用哪个?
看了这个帖HashTrieMaps上docs.scala-lang.org:
例如,要在地图中找到给定的密钥,首先要获取密钥的哈希码.然后,哈希码的最低5位用于选择第一个子树,然后是接下来的5位,依此类推.一旦存储在节点中的所有元素具有在直到该级别选择的位中彼此不同的哈希码,则选择停止.
我认为这是一个很棒的(读取:快!)集合来存储我的Map [String,Long].
在我的Play框架中(使用Scala)我使用Anorm加载了大约18k个元素的代码片段.加载需要几秒钟(没什么大不了的,但任何提示?).我希望将它"存储在内存中",以便快速查找字符串到长时间的翻译.
val data = DB.withConnection { implicit c ?
SQL( "SELECT stringType, longType FROM table ORDER BY stringType;" )
.as( get[String]( "stringType" ) ~ get[Long]( "longType " )
map { case ( s ~ l ) ? s -> l }* ).toMap.withDefaultValue( -1L )
}
Run Code Online (Sandbox Code Playgroud)
此代码data的类型class scala.collection.immutable.Map$WithDefault.我希望这是一个类型HashTrieMap(或者HashMap,据我所知,链接引用所有Scala HashMaps都是HashTrieMap?).奇怪的是,我没有找到如何将其转换为HashTrieMap的方法.(我是Scala,Play和Anorm的新手.)
// Test for the repl (2.9.1.final). Map[String, Long]:
val data = Map( "Hello" -> 1L, "world" …Run Code Online (Sandbox Code Playgroud)