为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

开满天机 2023-06-21 13:19:56
我有一个像这样的数组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);


查看完整回答
反对 回复 2023-06-21
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

你的解决方案就快到了;支票只有一个错误:

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


查看完整回答
反对 回复 2023-06-21
  • 2 回答
  • 0 关注
  • 110 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信