如果我有一个c类型的集合T并且有一个属性p(例如Ttype P),那么执行 map-by-extracting-key 的最佳方法是什么?
c
T
p
P
val c: Collection[T] val m: Map[P, T]
一种方法如下:
m = new HashMap[P, T] c foreach { t => m add (t.getP, t) }
但现在我需要一个 可变 地图。有没有更好的方法来做到这一点,让它在 1 行,我最终得到一个 不可变 的地图?(显然我可以将上面的内容变成一个简单的库实用程序,就像在 Java 中一样,但我怀疑在 Scala 中没有必要)
您可以使用
c map (t => t.getP -> t) toMap
但请注意,这需要 2 次遍历。