我有一个像这样的数组String arr[][] = {{"abc"}, {"bcd"}, {null}}这是多维数组(数组中的单字符串数组)。我想删除这些空值并希望最终结果为{{"abc"}, {"bcd"}}. 该数组可以是任意大小,并且可以有任意数量的空值我试过这样的事情。我知道我可以使用传统的 for 循环,但我想使用 java8 或更高效地进行循环。 String arr1[][] = Arrays.stream(arr)
.filter(str -> (((str != null) && (str.length > 0))))
.toArray(String[][]::new);
2 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
您可以使用来自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
TA贡献1824条经验 获得超6个赞
你的解决方案就快到了;支票只有一个错误:
String arr1[][] = Arrays.stream(arr) .filter(str -> str[0] != null) .toArray(String[][]::new);
添加回答
举报
0/150
提交
取消