我有一个课程
String
和一个名为BnDAO的数据库
&'static str
在调用BnDAO来检索ID集的BN的过程中,我想根据String
这是我当前的代码
case class BN[A] (val BNId: Long, score: Double, child: A)
谢谢!
//谢谢艾伦的回答。根据他的回答。是否可以在一个遍历内创建一组Future [Option [List [BN]]]和Long to List [Long]映射(infoId-> List [BNId])。
答案 0 :(得分:0)
我不确定您的意思,因此我创建了两个答案。选择您想要的那个。
import scala.concurrent.duration._
val ids = scoreMap.keys.toVector
val futureBN = ids.map { id =>
val curBNFut = interestsDAO.readAsync(id)
val v = curBNFut.map(opt => opt.map(l =>
id -> l.map(e =>
scoreMap.get(e.id).map(escore => e.copy(score = escore)).getOrElse(e)
)
)
}
val mapResultFut = Future.sequence(futureBN).map(m =>
m.flatMap(identity).toMap
)
val mapResult = Await.result(mapResultFut, 5.seconds)
val setFut = futureBN.map(fut => fut.map{opt => opt.map{case (id, l) => l }}).toSet
或
import scala.concurrent.duration._
val ids = scoreMap.keys.toVector
val futureBN = ids.map { id =>
val curBNFut = interestsDAO.readAsync(id)
val v = curBNFut.map(opt => opt.map(l =>
id -> l.map(e =>
scoreMap.get(id).map(escore => e.copy(score = escore)).getOrElse(e)
)
)
}
val mapResultFut = Future.sequence(futureBN).map(m =>
m.flatMap(identity).toMap
)
val mapResult = Await.result(mapResultFut, 5.seconds)
val setFut = futureBN.map(fut => fut.map{opt => opt.map{case (id, l) => l }}).toSet
区别在于scoreMap.get的输入
我不确定您想要哪一个。
如果有任何错误,请发表评论。确保测试我的答案,以便它是您想要的。