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)
由于列表大小会很大,我如何有效地删除空值?
可变列表
您可以使用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)