получение массива ненулевых объектов - PullRequest
0 голосов
/ 24 мая 2018

Я разработал следующую функцию для получения массива ненулевых объектов:

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 голосов
/ 24 мая 2018

Благодаря комментарию Бена его решение сработало:

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

, и я также обнаружил, что это можно сделать немного чище, используя:

Stream.of(1, 2, null, 3).filter(Objects::nonNull).toArray();
0 голосов
/ 24 мая 2018

У меня есть другое решение, использующее lamdas, но оно выглядит очень похоже на ваше

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

Существует также множество хороших решений, если вы будете использовать списки: ссылка

...