Автор оригинала: Eugen Paraschiv.
Этот быстрый учебник собирается показать, как удалить все нулевой элементы из Список , с помощью простых Java, Guava, Apache Commons Collections и новой поддержки Java 8 lambda.
Эта статья является частью серии “Java – Назад к основным” здесь, на Baeldung.
1. Удалить нули из списка с помощью простой Java
Java Collections Framework предлагает простое решение для удаление всех нулевых элементов в Список – основная в то цикл :
@Test public void givenListContainsNulls_whenRemovingNullsWithPlainJava_thenCorrect() { Listlist = Lists.newArrayList(null, 1, null); while (list.remove(null)); assertThat(list, hasSize(1)); }
Кроме того, мы также можем использовать следующий простой подход:
@Test public void givenListContainsNulls_whenRemovingNullsWithPlainJavaAlternative_thenCorrect() { Listlist = Lists.newArrayList(null, 1, null); list.removeAll(Collections.singleton(null)); assertThat(list, hasSize(1)); }
Обратите внимание, что оба этих решения изменят исходный список.
2. Удалить nulls из списка с помощью Google Guava
Мы также можем удалить нули с помощью Guava и более функциональный подход с помощью предикатов:
@Test public void givenListContainsNulls_whenRemovingNullsWithGuavaV1_thenCorrect() { Listlist = Lists.newArrayList(null, 1, null); Iterables.removeIf(list, Predicates.isNull()); assertThat(list, hasSize(1)); }
Кроме того, если мы не хотим изменять исходный список , Guava позволит нам создать новый список фильтров:
@Test public void givenListContainsNulls_whenRemovingNullsWithGuavaV2_thenCorrect() { Listlist = Lists.newArrayList(null, 1, null, 2, 3); List listWithoutNulls = Lists.newArrayList( Iterables.filter(list, Predicates.notNull())); assertThat(listWithoutNulls, hasSize(3)); }
3. Удалить нули из списка, используя коллекции Apache Commons
Теперь рассмотрим простое решение с помощью библиотеки Apache Commons Collections с использованием аналогичного функционального стиля:
@Test public void givenListContainsNulls_whenRemovingNullsWithCommonsCollections_thenCorrect() { Listlist = Lists.newArrayList(null, 1, 2, null, 3, null); CollectionUtils.filter(list, PredicateUtils.notNullPredicate()); assertThat(list, hasSize(3)); }
Обратите внимание, что это решение также изменить исходный список .
4. Удалить нули из списка с использованием Lambdas (Java 8)
Наконец – давайте посмотрим на решение Java 8 с использованием Lambdas для фильтрации списка ; процесс фильтрации может быть выполнен параллельно или последовательно:
@Test public void givenListContainsNulls_whenFilteringParallel_thenCorrect() { Listlist = Lists.newArrayList(null, 1, 2, null, 3, null); List listWithoutNulls = list.parallelStream() .filter(Objects::nonNull) .collect(Collectors.toList()); } @Test public void givenListContainsNulls_whenFilteringSerial_thenCorrect() { List list = Lists.newArrayList(null, 1, 2, null, 3, null); List listWithoutNulls = list.stream() .filter(Objects::nonNull) .collect(Collectors.toList()); } public void givenListContainsNulls_whenRemovingNullsWithRemoveIf_thenCorrect() { List listWithoutNulls = Lists.newArrayList(null, 1, 2, null, 3, null); listWithoutNulls.removeIf(Objects::isNull); assertThat(listWithoutNulls, hasSize(3)); }
И это все – некоторые быстрые и очень полезные решения для избавления от всех нулевых элементов из списка.
5. Заключение
В этой статье мы смогли изучить различные подходы, которые мы можем удалить нули из Список с помощью Java, Guava или Lambdas.
Реализация всех этих примеров и фрагментов можно найти в Проект GitHub . Это Maven основе проекта, поэтому она должна быть легко импортировать и запускать.