【发布时间】:2018-11-03 13:38:57
【问题描述】:
我开发了以下函数来获取非空对象数组:
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... 参数
【问题讨论】:
-
您应该更喜欢集合类而不是数组,因为它们提供更多功能并且很少需要使用数组。然后您可以使用例如
List.removeIf()来消除空值,或者首先不向集合中添加任何空值。 -
Arrays.<Object> asList(1, 2, null, 3).stream().filter(Objects::nonNull).toArray();会达到同样的效果。这里的优点是这可以内联完成,因为它需要null对象。 -
@Kayaman 我知道,但我需要一个数组,因为它的参数传递给我没有开发的函数
-
据我所知,JDK 中没有这种方法。合乎逻辑的地方是
Arrays,但那里没有这样的方法。
标签: java arrays collections java-stream