如何从包含数组的数组中删除空值

我有一个像这样的数组

String arr[][] = {{"abc"}, {"bcd"}, {null}}

这是多维数组(数组中的单字符串数组)。我想删除这些空值并希望最终结果为{{"abc"}, {"bcd"}}. 该数组可以是任意大小,并且可以有任意数量的空值

我试过这样的事情。我知道我可以使用传统的 for 循环,但我想使用 java8 或更高效地进行循环。

 String arr1[][] = Arrays.stream(arr)
            .filter(str -> (((str != null) && (str.length > 0))))
            .toArray(String[][]::new);


开满天机
浏览 112回答 2
2回答

子衿沉夜

您可以使用来自Arrays辅助类的流来过滤非空值:String arr[][] = {{"abc"}, {"bcd"}, {null}}; String result[][] = Arrays.stream(arr)     .map(innerArray -> Arrays.stream(innerArray).filter(Objects::nonNull).toArray(String[]::new))     .toArray(String[][]::new);编辑:正如@Andreas 指出的那样,这会留下空的内部数组,我们需要用额外的filter(innerArray -> innerArray.length > 0). 最后:String result[][] = Arrays.stream(arr)     .map(innerArray -> Arrays.stream(innerArray).filter(Objects::nonNull).toArray(String[]::new))     .filter(innerArray -> innerArray.length > 0)     .toArray(String[][]::new);

慕妹3242003

你的解决方案就快到了;支票只有一个错误:String arr1[][] = Arrays.stream(arr)                         .filter(str -> str[0] != null)                         .toArray(String[][]::new);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java