2017-06-09 59 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看起來多餘。