Scala for-comprehension returning an ordered map

╄→尐↘猪︶ㄣ 提交于 2019-12-06 03:41:25

You can achieve do it by using the companion object of ListMap class as followings:

class Bar
class Foo(val name: String, val bar: Bar)
val myList: java.util.List[Foo] = ...
val result = ListMap((for(foo <- myList) yield (foo.name, foo.bar)):_*)
ymnk

The collection.breakOut is your good friend in such a case,

val result: collection.immutable.ListMap[String, Bar] = 
  myList.map{ foo => (foo.name, foo.bar) }(collection.breakOut)

If it is important to use for-comprehension expression, it will be done as follows,

val result: collection.immutable.ListMap[String, Bar] = {
  for { foo <- myList } yield (foo.name, foo.bar)
}.map(identity)(collection.breakOut)

Scala 2.8 breakOut has explained collection.breakOut very well.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!