xref: /XiangShan/src/main/scala/utils/SeqUtils.scala (revision 2fbf124591fc3d1afb86f8e0512ca15f94c8de04)
1*2fbf1245SXuan Hupackage utils
2*2fbf1245SXuan Hu
3*2fbf1245SXuan Huimport scala.collection.mutable
4*2fbf1245SXuan Hu
5*2fbf1245SXuan Huobject SeqUtils {
6*2fbf1245SXuan Hu  /**
7*2fbf1245SXuan Hu    * @todo remove it when when xiangshan is updated to 2.13.11
8*2fbf1245SXuan Hu    */
9*2fbf1245SXuan Hu  def distinctBy[A, B](seqLike: Seq[B])(f: B => A): Seq[B] = {
10*2fbf1245SXuan Hu    val seen = new mutable.HashSet[A]()
11*2fbf1245SXuan Hu    var res = Seq[B]()
12*2fbf1245SXuan Hu    val it = seqLike.iterator
13*2fbf1245SXuan Hu    while (it.hasNext) {
14*2fbf1245SXuan Hu      val next = it.next
15*2fbf1245SXuan Hu      if (seen.add(f(next))) {
16*2fbf1245SXuan Hu        res :+= next
17*2fbf1245SXuan Hu      }
18*2fbf1245SXuan Hu    }
19*2fbf1245SXuan Hu    res
20*2fbf1245SXuan Hu  }
21*2fbf1245SXuan Hu}
22