什么是在Scala中编写`indexBy`的最佳方法?

时间:2017-12-12 22:07:24

标签: algorithm scala

Underscore.js有一个函数indexBy,它执行以下操作:

  

给定一个列表,以及一个为每个返回一个键的iteratee函数   列表中的元素(或属性名称),返回一个带有的对象   每个项目的索引。就像groupBy一样,但是当你知道你的钥匙时   是独一无二的。

var stooges = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}];
_.indexBy(stooges, 'age');
=> {
  "40": {name: 'moe', age: 40},
  "50": {name: 'larry', age: 50},
  "60": {name: 'curly', age: 60}
}

在Scala中编写此内容的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

final case class Stooge(name: String, age: Int)

val stooges = Seq(Stooge("moe", 40), Stooge("larry", 50))

val result = stooges.map(s => s.age -> s).toMap

println(result)
// Map(40 -> Stooge(moe,40), 50 -> Stooge(larry,50))