Java - 从对象列表中删除 null

cod*_*eek -2 java list arraylist java-8

我有一个巨大的 java 列表对象,如下所示:

List<Object[]> res = // repo method that will return query result
Run Code Online (Sandbox Code Playgroud)

我必须从 res 对象中删除空值。

到目前为止,我尝试了以下方法,但似乎没有任何效果:

1. res.remove(null);
2. res.removeAll(Collections.singleton(null));
3. res.removeAll(null);
4. while(res.remove(null));
Run Code Online (Sandbox Code Playgroud)

由于列表大小会很大,我如何有效地删除空值?

Nik*_*las 6

可变列表

您可以使用List::removeIf谓词检测null项目。

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

mutableList.removeIf(Objects::isNull);
Run Code Online (Sandbox Code Playgroud)

不可变列表

在这种情况下,您必须使用 Stream API 或 for 循环来查找非空元素并将它们添加到新列表中。

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

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