1

我正在尝试将序列的每个对象的值映射到列表的两个键的映射,但是在获取正确的语法时遇到了一些问题。

def carConverter(cars: Seq[Car]): Map[(String, Int), List[Car]] = {
for ( car <- cars)
  yield Map[(String,Int), List[Car]] {
  //???
 }
}

我想做的是遍历这个序列,将每辆车的名称(car.name)和年份(car.year)作为两个键映射到地图上,并将汽车附加到与这个名称和年份相关的汽车列表中作为 Map 的值。我也试图在这里不使用可变变量。

4

1 回答 1

3

映射的条目只是元组,知道您可以映射Seq[Car]并创建这些元组。之后只需拨打电话toMap,您将获得Map

cars.map { car =>
  (car.name, car.year) -> car
}.toMap

编辑:

如果要保留重复项,则更易于使用groupBy

cars.groupBy(car => (car.name, car.year))
于 2014-02-03T10:41:21.800 回答