I want to get rid of .isDefined
and .get
, any good suggestions
val t = Seq(Option("abc"), Option("def"), Option("abc"), Option(""))
t.filter(_.isDefined).groupBy(x =>x.get)
I need my return type as Map[String, Seq[String]]
CodePudding user response:
Since you need to filter
and map
at the same time, you can collect
:
t.collect { case Some(s) if s.nonEmpty => s }.groupBy(identity)
The result of this is
Map("abc" -> Seq("abc", "abc"), "def" -> List("def"))
You can play around with this code here on Scastie.
You can read more about collect
here on the official documentation.