从列表中删除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); } })); }