Menghapus semua Null dari Daftar di Java

Tutorial singkat ini akan menunjukkan cara menghapus semua elemen null dari Daftar , menggunakan Java biasa, Guava, Koleksi Apache Commons, dan dukungan lambda Java 8 yang lebih baru.

Artikel ini adalah bagian dari seri “ Java - Kembali ke Dasar ” di Baeldung.

1. Hapus Nulls Dari Daftar Menggunakan Java Biasa

Java Collections Framework menawarkan solusi sederhana untuk menghapus semua elemen null dalam Daftar - while loop :

@Test public void givenListContainsNulls_whenRemovingNullsWithPlainJava_thenCorrect() { List list = Lists.newArrayList(null, 1, null); while (list.remove(null)); assertThat(list, hasSize(1)); }

Alternatifnya, kita juga bisa menggunakan pendekatan sederhana berikut:

@Test public void givenListContainsNulls_whenRemovingNullsWithPlainJavaAlternative_thenCorrect() { List list = Lists.newArrayList(null, 1, null); list.removeAll(Collections.singleton(null)); assertThat(list, hasSize(1)); }

Perhatikan bahwa kedua solusi ini akan mengubah daftar sumber.

2. Hapus Nulls Dari Daftar Menggunakan Google Guava

Kami juga dapat menghapus null menggunakan Guava dan pendekatan yang lebih fungsional, melalui predikat:

@Test public void givenListContainsNulls_whenRemovingNullsWithGuavaV1_thenCorrect() { List list = Lists.newArrayList(null, 1, null); Iterables.removeIf(list, Predicates.isNull()); assertThat(list, hasSize(1)); }

Alternatifnya, jika kita tidak ingin mengubah daftar sumber , Guava akan mengizinkan kita membuat daftar filter baru:

@Test public void givenListContainsNulls_whenRemovingNullsWithGuavaV2_thenCorrect() { List list = Lists.newArrayList(null, 1, null, 2, 3); List listWithoutNulls = Lists.newArrayList( Iterables.filter(list, Predicates.notNull())); assertThat(listWithoutNulls, hasSize(3)); }

3. Hapus Nulls Dari Daftar Menggunakan Koleksi Apache Commons

Sekarang mari kita lihat solusi sederhana menggunakan pustaka Koleksi Apache Commons menggunakan gaya fungsional yang serupa:

@Test public void givenListContainsNulls_whenRemovingNullsWithCommonsCollections_thenCorrect() { List list = Lists.newArrayList(null, 1, 2, null, 3, null); CollectionUtils.filter(list, PredicateUtils.notNullPredicate()); assertThat(list, hasSize(3)); }

Perhatikan bahwa solusi ini juga akan mengubah daftar asli .

4. Hapus Null dari Daftar Menggunakan Lambdas (Java 8)

Akhirnya - mari kita lihat solusi Java 8 menggunakan Lambdas untuk memfilter Daftar ; proses pemfilteran dapat dilakukan secara paralel atau serial:

@Test public void givenListContainsNulls_whenFilteringParallel_thenCorrect() { List list = 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)); }

Dan hanya itu - beberapa solusi cepat dan sangat berguna untuk menyingkirkan semua elemen nol dari Daftar.

5. Kesimpulan

Pada artikel ini, kami dapat menjelajahi berbagai pendekatan yang dapat kami miliki untuk menghapus null dari Daftar menggunakan Java, Guava, atau Lambdas.

Penerapan semua contoh dan cuplikan ini dapat ditemukan di proyek GitHub. Ini adalah proyek berbasis Maven sehingga harus mudah untuk diimpor dan dijalankan.