concatenate - scala list
¿Cómo obtener un conjunto de todos los elementos que ocurren varias veces en una lista en Scala? (2)
Un poco más enrevesado pero puede evitar tener que llamar a toSet.toList
, primero toSet.toList
los enteros:
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))
A continuación, recopile solo el que la lista tiene una longitud mayor a 1:
scala> s.groupBy(identity).collect { case (v, l) if l.length > 1 => v }
res17: scala.collection.immutable.Iterable[Int] = List(1, 3)
Si quiere un Set
solo llame a toSet
.
Por ejemplo, para List(1, 1, 1, 2, 3, 3, 4)
sería Set(1, 3)
, porque 1 y 3 son los únicos elementos que aparecen varias veces.
val s = List(1, 1, 1, 2, 3, 3, 4) // a list with non-unique elements
(s diff s.distinct) toSet // Set(1, 3)