Java - Entfernen Sie Null aus der Liste der Objekte [Duplikat]

Nov 19 2020

Ich habe ein riesiges Java-Listenobjekt wie folgt:

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

Ich muss Nullen aus dem res-Objekt entfernen.

Ich habe bisher die folgenden Methoden ausprobiert, aber nichts schien zu funktionieren:

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

Wie kann ich Nullen effizient entfernen, da die Listengröße sehr groß sein wird?

Antworten

6 NikolasCharalambidis Nov 19 2020 at 17:48

Veränderbare Liste

Sie können List::removeIfmit einem Prädikat nullElemente erkennen.

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

mutableList.removeIf(Objects::isNull);

Unveränderliche Liste

In diesem Fall müssen Sie die Stream-API oder eine for-Schleife verwenden, um Nicht-Null-Elemente zu finden und sie einer neuen Liste hinzuzufügen.

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

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