帮助程序删除Java列表中的空引用?

Art*_*ald 40 java collections

鉴于以下列表:

List<String> list = new ArrayList<String>();

list.add("s1");
list.add("s2");
list.add(null);
list.add("s3");
list.add(null);
list.add("s4");
Run Code Online (Sandbox Code Playgroud)

我需要一个删除空引用的辅助类.就像是:

SomeHelper.removeNullReference(名单);

这样列表只包含"s1","s2","s4","s4"(非空引用).

我应该用什么来满足这个要求?

Mic*_*rdt 112

list.removeAll(Collections.singleton(null));
Run Code Online (Sandbox Code Playgroud)

  • Collections和Array类是真正的宝藏 - 而singletonList()以及emptyList()是使用ArraList或Vector作为方法参数类型的主要原因,任何地方都应该受到至少20次鞭打的惩罚. (5认同)
  • 它也可能是`list.removeAll(Arrays.asList(null))`,但`singletonList`稍快一些. (3认同)

Jef*_*oom 11

Java 8添加Collection.removeIf(Predicate)了删除与谓词匹配的所有元素,因此您可以null从列表(或任何集合)中删除所有出现的元素

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

使用java.util.Objects.isNull作为Predicate.

.removeIf(x -> x == null)如果您愿意,也可以使用; 差别很小.