我想不久前我在为少量元素创建集合时使用"特殊"实现阅读了Scala.例如,对于一个List
只有4个元素,也有一些是像"List4",可以携带恰好有4个要素,意味着实现使用领域的固定量(类似的方式工作的元组,有Tuple1
,Tuple2
,Tuple3
...).
1.)不幸的是,我再也找不到这些信息了.我对上面刚刚声明的内容(或许我将其与另一种语言混在一起)错了吗?
2.)我的问题的原因:在Scala中,我经常发现自己使用集合来处理最简单的事情.例如,当检查少量变量的值时,我经常做这样的事情:
def checkCoordinates(x: Int, y: Int, z: Int) = Seq(x, y, z).forall(_ >= 0)
在Java中,我从来没有这样做过.这主要是因为Scala(以及一般的函数语言)中的集合感觉更轻量级,至少在语法方面.但是,性能观点和使用集合进行简单任务的习惯如上所示(如上所示)?
您可以在此处看到优化集:
https://github.com/scala/scala/blob/v2.11.7/src/library/scala/collection/immutable/Set.scala
有Set1
,Set2
,Set3
和Set4
地图采用了同样的方法
https://github.com/scala/scala/blob/v2.11.7/src/library/scala/collection/immutable/Map.scala
对于Seq
和List
似乎链接列表(::)创建无论什么(未优化).
请记住,在分析显示导致应用程序性能问题之前,您不应该真正担心这类事情.