Java - Hapus null dari daftar Objek [duplikat]

Nov 19 2020

Saya memiliki objek daftar java berukuran besar sebagai berikut:

List<Object[]> res = // repo method that will return query result

Saya harus menghapus nulls dari objek res.

Saya mencoba metode di bawah ini sejauh ini tetapi tidak ada yang berhasil:

1. res.remove(null);
2. res.removeAll(Collections.singleton(null));
3. res.removeAll(null);
4. while(res.remove(null));

Bagaimana cara menghapus null secara efisien karena ukuran daftar akan menjadi sangat besar?

Jawaban

6 NikolasCharalambidis Nov 19 2020 at 17:48

Daftar yang bisa berubah

Anda dapat menggunakan List::removeIfdengan predikat mendeteksi nullitem.

List<Object[]> mutableList = new ArrayList<>(Arrays.asList(
    new Object[] {}, 
    null, 
    new Object[] {}));

mutableList.removeIf(Objects::isNull);

Daftar yang tidak bisa diubah

Dalam hal ini Anda harus menggunakan Stream API atau for-loop untuk menemukan elemen bukan null dan menambahkannya ke daftar baru.

List<Object[]> immutableList = Arrays.asList(
    new Object[] {}, 
    null, 
    new Object[] {});

List<Object[]> newList = immutableList.stream()
                                      .filter(Objects::nonNull)
                                      .collect(Collectors.toList());