Как найти повторяющиеся значения в карте
У меня есть следующее Map[String, Int]
:
val m = Map[String, Int](
"[LOGIN-011]" -> 0,
"[LOGIN-103]" -> 3,
"[LOGIN-222]" -> 10,
"[ERROR-110]" -> 1,
"[ERROR-012]" -> 3,
...
)
Как найти дублированные значения в Map
и распечатать значения с List[String]
следующее:
3 -> List("[LOGIN-103]", "[ERROR-012]")
2 ответа
Только следующие работы в scala 2.13+
val map = Map (
"[LOGIN-011]" -> 0,
"[LOGIN-103]" -> 3,
"[LOGIN-222]" -> 10,
"[ERROR-110]" -> 1,
"[ERROR-012]" -> 3
)
val duplicateValues = map.groupMap(_._2)(_._1).filterNot(_._2.sizeIs == 1)
//Map(3 -> List([ERROR-012], [LOGIN-103]))
Пытаться
m
.toSeq
.groupBy { case (key, value) => value }
.collect { case (key, values: List[(String, Int)]) if values.size > 1 => (key, values.map(_._1)) }
какие выводы
HashMap(3 -> List([ERROR-012], [LOGIN-103]))
Вот один вкладыш Луиса:
m.groupBy(_._2).collect { case (key, group: Map[String, Int]) if group.size > 1 => (key, group.keySet) }