順序付きマップに割り当てることができるものを返す for-comprehension を使用するにはどうすればよいですか? これは私が持っているコードを簡略化したものです:
class Bar
class Foo(val name: String, val bar: Bar)
val myList: java.util.List[Foo] = ...
val result: ListMap[String, Bar] =
for {
foo <- myList
} yield (foo.name, foo.bar)
タプルが for-comprehension から返される順序で、結果が順序付けられた Map であることを確認する必要があります。
上記で、エラーが発生します:
error: type mismatch;
found : scala.collection.mutable.Buffer[(String,Bar)]
required: scala.collection.immutable.ListMap[String,Bar]
foo <- myList
これはコンパイルされます:
class Bar
class Foo(val name: String, val bar: Bar)
val myList: java.util.List[Foo] = ...
val result: Predef.Map[String, Bar] =
{
for {
foo <- myList
} yield (foo.name, foo.bar)
} toMap
ただし、マップは順序付けされないと想定しており、明示的な toMap 呼び出しが必要です。
どうすればこれを達成できますか?