我想在結果中使用實際值而不是選項對象。從結果中刪除選項
case class MyObj(id: String, objVal: List[String])
val listOfListOfIds = List(List(id1, id2, id3), List(id4, id5, id6))
val allMyObjs = List(
MyObj("id1",List("val1a", "val1b")),
MyObj("id2",List("val2a", "val2b")),
MyObj("id3",List("val3a", "val3b")),
MyObj("id4",List("val4a", "val4b")),
MyObj("id5",List("val5a", "val5b")),
MyObj("id6",List("val6a", "val6b"))
)
listOfListOfIds.map { _.map { id => allMyObjs.find(obj => obj.id == id).map { _.objVal map { v => Future(v) } } } }
回報List[List[Option[List[scala.concurrent.Future[String]]]]]
,如何讓List[List[List[scala.concurrent.Future[String]]]]
呢?
可以打開一個'選項[列表[T]]'到可能爲空'列表[T]'調用'opt.getOrElse(List.empty [T])'。代碼將受益於使用案例類具有更多顯式類型。 – cchantep
這是你的實際代碼?我想知道如果你想在兩個集合之間進行交集,爲什麼不使用'HashSet'?另外,你可以扁平清單的名單? –
我還建議至少使用中間變量,不可變變量。我相信'List [List [List [scala.concurrent.Future [String]]]]'類型不清楚要理解。 –