我开发了以下函数来获取非空对象的数组:
private static Object[] getArrayNotNulls(Object... objs) {
return Arrays.stream(objs).filter(Objects::nonNull).toArray();
}我这样叫它:
Object[] x = getArrayNotNulls(1,2, null, 3);然而,我想知道是否已经有一个java方法可以做同样的事情。类似于:
Object[] y = Collections.getArrayNotNull(1,2,null,3)或者混合,我想直接调用
Object[] y = Arrays.stream(1,2,null,3).filter(Objects::nonNull).toArray();
// ^^^^^^^^^^但这不起作用,因为它不接受对象...参数
发布于 2018-05-24 21:36:28
多亏了Ben comment,他的解决方案制定出来了:
Arrays.<Object> asList(1, 2, null, 3).stream().filter(Objects::nonNull).toArray();我还发现,使用以下命令可以更清晰地完成此任务:
Stream.of(1, 2, null, 3).filter(Objects::nonNull).toArray();发布于 2018-05-24 18:54:32
我有另一个使用lamdas的解决方案,但它看起来与您的非常相似。
Stream.filter(x -> x!=null):如果您要使用列表,也有很多不错的解决方案:link
https://stackoverflow.com/questions/50507437
复制相似问题