获取非null对象的数组

时间:2018-05-24 10:49:47

标签: java arrays collections java-stream

我开发了以下函数来获取非空对象数组:

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();
//                         ^^^^^^^^^^

但这不起作用,因为它不接受Object ... arguments

2 个答案:

答案 0 :(得分:0)

感谢Ben的评论,他的解决方案得以实现:

Arrays.<Object> asList(1, 2, null, 3).stream().filter(Objects::nonNull).toArray();

我还发现使用以下方法可以做得更清洁:

Stream.of(1, 2, null, 3).filter(Objects::nonNull).toArray();

答案 1 :(得分:-2)

我有另一个使用lamdas的解决方案,但它看起来非常类似于你的

Stream.filter(x -> x!=null):

如果您使用列表,还有很多好的解决方案: link