You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java是否存在内置方法过滤数组中的非空对象?

Java有没有内置方法替代我写的非空对象数组过滤方法?

嘿,这个问题问得好!咱们一步步来理清楚:

首先直接给你答案:Java标准库里并没有专门提供和你写的getArrayNotNulls功能完全一致的现成静态方法——不管是Collections还是Arrays类里,都找不到类似Collections.getArrayNotNull(...)这种直接调用的方法。

然后说说你提到的Stream API调用问题:你说Arrays.stream(1,2,null,3).filter(Objects::nonNull).toArray()跑不起来,其实是编译器的类型推断卡壳了——你同时传了基本类型int和null(属于Object类型),编译器没法自动判断要把这些参数打包成Integer[]还是Object[]。解决这个问题很简单,这里给你两个标准库的替代方案:

方案1:显式指定数组类型给Arrays.stream

Object[] x = Arrays.stream(new Object[]{1, 2, null, 3})
                   .filter(Objects::nonNull)
                   .toArray();

方案2:用Stream.of()(更贴近你的调用习惯)

Stream.of()本身就支持Object...可变参数,所以可以直接像你调用自定义方法那样传参数:

Object[] x = Stream.of(1, 2, null, 3)
                   .filter(Objects::nonNull)
                   .toArray();

这个写法和你的getArrayNotNulls(1,2,null,3)调用几乎一样,而且完全用的是Java标准库的API。

最后说一句:你自己写的getArrayNotNulls方法非常简洁高效,如果团队里大家都习惯用这个自定义方法,完全可以继续用;要是想依赖标准库,上面的Stream.of方案就是完美替代~

内容的提问来源于stack exchange,提问作者Mayday

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:03:27