1. ホーム
  2. scala

[解決済み] Scalaは、コレクションをMap-by-keyに変換する最良の方法ですか?

2022-04-22 13:04:57

質問

コレクションがある場合 c 型の T というプロパティがあり p について T (タイプの P と言う)には、どのような方法があるのでしょうか? マップバイエクストラクティングキー ?

val c: Collection[T]
val m: Map[P, T]

一つの方法として、次のようなものがあります。

m = new HashMap[P, T]
c foreach { t => m add (t.getP, t) }

しかし、今度は ミュータブル マップを作成します。これを1行で済ませる良い方法はないでしょうか。 不変 Mapですか?(もちろん、Javaのように上記を単純なライブラリユーティリティにすることもできますが、Scalaではその必要はないのではないかと思います)

どのように解決するのか?

を使用することができます。

c map (t => t.getP -> t) toMap

が、これには2つのトラバーサルが必要であることに注意してください。