从Scala中的数组数组中过滤空数组

时间:2012-07-17 13:37:12

标签: arrays scala

我有一个String类型的数组,看起来像:

[[""],["lorem ipsum", "foo", "bar"], [""], ["foo"]]

我想要做的是过滤掉数组中的所有元素,这些元素本身就是一个空数组(在本例中,“空数组”,我指的是只包含空字符串的数组),离开我只是:

[["lorem ipsum", "foo", "bar"], ["foo"]]

然而,我很难找到一种方法来做到这一点(对Scala来说还是新手) - 任何帮助都非常感激!

感谢。

4 个答案:

答案 0 :(得分:16)

编辑(使用Rogach的简化):

array.filterNot(_.forall(_.isEmpty))

答案 1 :(得分:0)

在你的描述中,你会问如何

  

过滤掉数组中包含的所有元素   空字符串。

当前接受的答案是这样做的,但也会过滤掉空数组和包含多个空字符串的数组(即不只是[""],还有[]["", "", ""]等。 (事实上​​,第一部分x.isEmpty ||完全是多余的。)从字面上翻译您的要求,如果您的数组是xss,则需要

xss.filter(_ != Array(""))  // does not work!

这不起作用,因为Java数组的equals方法doesn't work as you might expect。相反,在比较数组时,请使用sameElementsdeep

xss.filterNot(_ sameElements Seq(""))

xss.filter(_.deep != Seq(""))

在idomatic Sc​​ala代码中,您不会使用Array,所以这不会经常出现。首选VectorList

答案 2 :(得分:0)

在您的情况下,您可以使用:

$

答案 3 :(得分:-1)

使用以下内容:

{{1}}