【问题标题】:Scala: creating HashMap using two ListsScala:使用两个列表创建 HashMap
【发布时间】: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 适用于WS1WS2Worker2 适用于WS1WS2Worker3 适用于WS3WS4 和@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


【解决方案1】:
val list = workersList.map(w => (w -> w.worksIn)).toMap // type Map[Worker, List[WorkStation]]

workStationList 似乎是多余的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 2021-12-17
    • 2019-12-30
    • 2011-12-18
    • 1970-01-01
    相关资源
    最近更新 更多