到目前为止,我能想到的唯一方法是使用:
var ans: TreeMap[Int, Int] = immutable.TreeMap(List(1,2,3).map(e => (e, e*2)): _*)
1)有没有办法不使用vararg _ *语法?
2)这种模式在scala中是一种很好的做法吗?
答案 0 :(得分:2)
1)有没有办法不使用vararg _ *语法?
是的,您可以使用breakOut
参数map
。请注意,这需要对变量
import scala.collection.breakOut
import scala.collection.immutable.TreeMap
val ans: TreeMap[Int, Int] = List(1,2,3).map(e => (e, e*2))(breakOut)
2)这种模式在scala中是一种很好的做法吗?
在Scala 2.13中的集合允许您编写list.to(TreeMap)
之前,没关系。我的意思是,它不像有更好的选择,所以用什么来解决你的问题。
答案 1 :(得分:1)
有没有办法不使用vararg _ *语法?
由于apply
上的TreeMap
方法采用(A, B)*
类型的vararg,我看不到任何其他内置方式
这种模式在scala中是一种很好的做法吗?
我不明白为什么不会这样。
另一种方法是以toTreeMap
地图的形式提供一种可行的扩展方法。
答案 2 :(得分:1)
1)另一种方法是创建一个空的TreeMap,然后添加所有元素:
immutable.TreeMap.empty[Int, Int] ++ (List(1,2,3).map(e => (e, e*2)))
我对哪种方式更好没有强烈的感受。
2)是的,这很常见。