How to get a set of all elements that occur multiple times in a list in Scala?
2 answers
A little more confusing, but you can avoid the call toSet.toList
by putting in integers first:
scala> s.groupBy(identity)
res13: scala.collection.immutable.Map[Int,List[Int]] =
Map(2 -> List(2), 4 -> List(4), 1 -> List(1, 1, 1), 3 -> List(3, 3))
Then we collect only one of them: the length of the list is greater than 1:
scala> s.groupBy(identity).collect { case (v, l) if l.length > 1 => v }
res17: scala.collection.immutable.Iterable[Int] = List(1, 3)
If you Set
just want to call toSet
.
+5
source to share