我是scala的新手,在按键值合并或加入两个列表(不知道scala中的确切术语)时遇到问题。在一个案例中,键值不匹配,我选择了java。util。NoTouchElementException:找不到密钥错误。但我只想要匹配的病例。我的示例代码片段如下:
val users = List(
(1,1,4.0),
(1,3,4.0),
(1,6,4.0)
)
val cars = List(
(1,1,"ww"),
(1,3,"mds"),
(2,6,"pgt")
)
val usersmapped = users.map(i => ((i._1,i._2),i)).toMap
val carsmapped = cars.map(i => ((i._1,i._2),i)).toMap
val result = carsmapped.map(ar => (ar._2,usersmapped(ar._1)._3))
上面代码的错误消息是:java。util。未发现异常:(2:nocentelemeption)
我的目标是这样:
List(
(1,1,ww) -> 4.0,
(1,3,mds)-> 4.0
)
或
List(
(1,1,ww) -> 4.0,
(1,3,mds) -> 4.0,
(1,6,null) -> 4.0 //null means no match with other list
)
特别是第一个是可能的吗?我该怎么做?
我试过了,但没有结果:
val result = Try(carsmapped.map(ar => (ar._2,usersmapped(ar._1)._3)))
).toOption
如果你能帮忙,我将不胜感激