从对象列表中删除null

b5buobof  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(356)

这个问题在这里已经有答案了

从列表中删除空元素(9个答案)
上个月关门了。
我有一个巨大的java列表对象,如下所示:

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

我必须从res对象中删除空值。
到目前为止,我尝试了以下方法,但似乎没有任何效果:

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

如何才能有效地删除空值,因为列表的大小将是巨大的?

nle07wnf

nle07wnf1#

可变列表
你可以用 List::removeIf 使用 predicate 检测 null 项目。

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

mutableList.removeIf(Objects::isNull);

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

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

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

相关问题