从列表中删除null元素

List list = new ArrayList(); list.add("One"); list.add(null); list.add("Two!"); list.add(null); list.add("Three"); list.add(null); list.add("Four"); list.add(null); 

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

这应该工作:

 list.removeAll(Collections.singleton(null)); 

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

 list.removeIf(Objects::isNull); 

扩展ArrayList并覆盖add()addAll()方法,并且不允许null

或者你可以使用list.removeAll(null); 如此处所示, 内部迭代循环

看看LambdaJ,它允许你“无”循环操作集合。 实际上,循环是在库中实现的,但它非常酷,它简化了代码并缩短了代码。

效率不高,但有效

while(list.remove(null));

如果您自己构建列表并且不确定值是否为null,则还可以使用CollectionUtils.addIgnoreNull(list,elementToAdd); 这将阻止添加空元素。 这仅在构造列表时有效。 如果您从其他地方接收列表并希望在使用列表之前删除所有非null元素,则list.removeAll(Collections.singleton(null)); 将是最好的

 for (int i = 0; i  array.get(j+i)){ Integer t = array.get(j+i); array.set(j+i,array.get(j)); array.set(j,t); } } } for(int i = array.size()-1; i >= 0; i--){ 

它是一个升序,这个问题的降序是什么?

使用google.common.

 import com.google.common.collect.Iterables; import com.google.common.collect.Lists; public List removeBlanks(List list) { return Lists.newArrayList(Iterables.filter(list, new Predicate() { @Override public boolean apply(String arg) { return StringUtils.isNotEmpty(arg); } })); }