xref: /XiangShan/src/main/scala/utils/MapUtils.scala (revision b56ef2726855dddb9bf4be89b3b52f16023c7ac8)
1*b56ef272SXuan Hupackage utils
2*b56ef272SXuan Hu
3*b56ef272SXuan Huobject MapUtils {
4*b56ef272SXuan Hu  def groupByValueUnique[K, V](map: Map[K, V]) : Map[V, Set[K]] = {
5*b56ef272SXuan Hu    map.toSeq
6*b56ef272SXuan Hu      .groupBy(_._2) // group by keys
7*b56ef272SXuan Hu      .map { case (key: V, seq: Seq[(K, V)]) => (key, seq.map(_._1).toSet) }
8*b56ef272SXuan Hu  }
9*b56ef272SXuan Hu
10*b56ef272SXuan Hu  def groupByValue[K, V](map: Map[K, V]) : Map[V, Seq[K]] = {
11*b56ef272SXuan Hu    map.toSeq
12*b56ef272SXuan Hu      .groupBy(_._2) // group by keys
13*b56ef272SXuan Hu      .map { case (key: V, seq: Seq[(K, V)]) => (key, seq.map(_._1)) }
14*b56ef272SXuan Hu  }
15*b56ef272SXuan Hu}
16