scala> Seq("abc", null).mkString(" ")
res0: String = abc null
但我想只获得“abc”
是否有scala方法可以跳过空值?
答案 0 :(得分:18)
scala> val seq = Seq("abc", null, "def")
seq: Seq[String] = List(abc, null, def)
scala> seq.flatMap(Option[String]).mkString(" ")
res0: String = abc def
答案 1 :(得分:15)
始终有Seq("abc", null).filter(_ != null).mkString(" ")
答案 2 :(得分:1)
Rex的回答和Eric的第一个评论相结合:
Seq("abc", null).map(Option(_)).collect{case Some(x) => x}.mkString(" ")
第一个map
包含导致Seq[Option[String]]
的值。 collect
然后基本上执行filter
和map
,放弃None
值并仅保留未打包的Some
值。