【发布时间】:2017-11-11 17:09:55
【问题描述】:
我在 Scala 中有两个列表:
val workersList = Worker1 :: Worker2 :: Worker3 :: Worker4 :: Nil // type List[Worker]
val workStationsList = WS1 :: WS2 :: WS3 :: WS4 :: Nil // type List[WorkStation]
一个worker对象有一个参数worksIn : List[WorkStation]
知道Worker1 适用于WS1 和WS2,Worker2 适用于WS1 和WS2,Worker3 适用于WS3 和WS4 和@98765433 987654334@ 和 WS4 我想得到一个明确说明的HashMap[Worker, List[WorkStation]]。
它的结果应该是这样的:
Worker1 -> List(WS1 :: WS2 :: Nil)
Worker2 -> List(WS1 :: WS2 :: Nil)
Worker3 -> List(WS3 :: WS4 :: Nil)
Worker4 -> List(WS3 :: WS4 :: Nil)
我尝试过这样做,但它不起作用:
val list = workersList.flatMap(w => workStationsList.map(ws => if(w.worksIn.contains(w)) w -> ws)).toMap[Worker, List[WorkStation]]
有人知道我该怎么做吗?
【问题讨论】:
-
真正的问题不在于如何将两个列表转换成一个HashMap。这样我才能得到我想要的结果。该答案对我的具体问题没有帮助。
-
不确定你需要第二个列表做什么,你可以简单地做
workersList.map(w => (w, w.worksIn)).toMap
标签: scala list functional-programming hashmap