通过子集合扩展汽车列表作为关键

时间:2016-08-10 17:23:03

标签: scala

我有车辆清单:

function openTab(url) {
    // Create link in memory
    var a = window.document.createElement("a");
    a.target = '_blank';
    a.href = url;

    // Dispatch fake click
    var e = window.document.createEvent("MouseEvents");
    e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    a.dispatchEvent(e);
};

openTab('http://www.google.com');

我现在想将此列表转换为Map,其中键是partId,值是具有该部分的所有汽车。

val cars = List(car1, car2, car3, car4, car5)
case class car(model: String, age: Int, partIds: Seq[String])

2 个答案:

答案 0 :(得分:2)

您需要使用中间类型跳过一些箍。解决方案是首先从List [Car]进入List [PartId - >汽车]。放下零件的部件可以让您的生活更轻松。您可以轻松地对汽车进行分组。

mapValues是Map上的一个函数。它将遍历每个元组,并且需要一些函数,其类型等于Map的值...在我的情况下,在mapValues之前我有一个Map [String,List [String - >汽车]]。

mapValues想要一个带签名的函数(carMapping:List [(String,Car)):A ......我们想要的类型当然是List [Car]

这是关于groupBy的一些内容,关于mapValues:http://markusjais.com/the-groupby-method-from-scalas-collection-library/

   (function x() {
       var name = null;
       console.log(name);
    }());

答案 1 :(得分:1)

cars flatMap ( x => x.partIds map ((_, x))) groupBy (_._1) mapValues (_ map (_._2))