我是 scala 的新手,在按鍵值合并或加入(不知道 scala 中的確切術語)兩個串列時遇到問題。在某種情況下,鍵值不匹配,我采取了 java.util.NoSuchElementException: key not found 錯誤。但我只想匹配案例。我的示例代碼片段如下:
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.NoSuchElementException: key not found: (2,6)
我的目標是擁有這樣的東西:
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
如果您能提供幫助,我將不勝感激
uj5u.com熱心網友回復:
使用get方法而不是“()”。獲取方法回傳選項:
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
carsmapped
.map(ar => (ar._2, usersmapped.get(ar._1).map(_._3)))
.foreach(println)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/459736.html
