从列表中删除null元素

Nou*_*lan 22 java

List<String> list = new ArrayList<String>();
  list.add("One");
  list.add(null);
  list.add("Two!");
  list.add(null);
  list.add("Three");
  list.add(null);
  list.add("Four");
  list.add(null);
Run Code Online (Sandbox Code Playgroud)

我有一个包含null元素的列表.有没有办法在不使用任何迭代的情况下从当前集合中删除null元素?

小智 50

这应该工作:

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


fab*_*ian 8

在java 8中,您可以使用Collection.removeIf:

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


Jig*_*shi 5

扩展ArrayList和覆盖add()&addAll()方法,只是不允许null

或者你可以使用list.removeAll(null);这里 在内部迭代循环

  • 我不喜欢扩展这样的类,因为它可能导致令人困惑的代码.您还应该记住,您还可以使用[ListIterator]将项目添加到列表中(http://docs.oracle.com/javase/1.4.2/docs/api/java/util/ListIterator.html#add %28java.lang.Object%29) (5认同)