Я немного запутался, Multimap
не сопоставляет A
с Set[B]
, оно сопоставляет A
с B
, где B
может иметь много значений. Так как вы хотите что-то неизменное, я собираюсь изменить это на Map[A, Set[B]]
, который не Multimap
, но выполняет одну из тех вещей, которые вы сказали, что хотели.
// This is your list of (A, B)
val l = List((1, "hi"),
(2, "there"),
(1, "what's"),
(3, "up?"))
// Group it and snip out the duplicate 'A'
// i.e. it initially is Map[A, List[(A, B)]] and we're going to convert it
// to Map[A, Set[B]]
val m = l.groupBy(e => e._1).mapValues(e => e.map(x => x._2).toSet)
println(m)
// Prints: Map(3 -> Set(up?), 1 -> Set(hi, what's), 2 -> Set(there))