2017-06-09 36 views
1

我有两个列表中斯卡拉:斯卡拉:创建HashMap中使用两个列表

val workersList = Worker1 :: Worker2 :: Worker3 :: Worker4 :: Nil // type List[Worker] 
val workStationsList = WS1 :: WS2 :: WS3 :: WS4 :: Nil // type List[WorkStation] 

一个工人对象有一个参数worksIn : List[WorkStation]

明知Worker1作品WS1WS2Worker2作品WS1WS2Worker3WS3WS4Worker4作品WS3WS4我想得到一个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]] 

有谁知道我能做到这一点?

+2

可能重复[在Scala中,有没有办法将两个列表转换为Map?](https://stackoverflow.com/questions/2189784/in-scala-is-there-a-way-to -take-convert-two-lists-into-a-map) –

+0

真正的问题不在于如何将两个列表转换为HashMap。这就是我如何得到我想要的结果。这个答案对我的具体问题没有帮助。 –

+0

不知道你需要第二个列表,你可以简单地执行'workersList.map(w =>(w,w.worksIn)).toMap' –

回答

1
val list = workersList.map(w => (w -> w.worksIn)).toMap // type Map[Worker, List[WorkStation]] 

workStationList看起来多余。