Nicht sicher eine out-of-the-Box-Funktion, aber ich würde es selbst tun, wie folgt:
import scala.collection.mutable.HashMap
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
val a: HashMap[Int, Future[Int]] = HashMap((1, Future(42)), (2, Future(43)))
val iterOfFutures = a.map { case (k, v) => v.map(vv => (k, vv)) }
val futureMap: Future[Map[Int, Int]] = Future.sequence(iterOfFutures).map(_.toMap)
futureMap.map(println) // Map(2 -> 43, 1 -> 42)
Thread.sleep(100)
EDIT:
nicht der Hauptpunkt der Frage, Aber wenn Sie eine veränderbare HashMap anstelle einer unveränderlichen Map möchten, müssen Sie sie konvertieren. Hier ist eine hässlich-ish Art und Weise aus der Spitze von meinem Kopf, vielleicht gibt es etwas schönere:
val futureMap: Future[HashMap[Int, Int]] =
Future.sequence(iterOfFutures).map(s => HashMap(s.toSeq: _*))