我试着像那样绕圈
// ArrayList tourists
for (Tourist t : tourists) {
if (t != null) {
t.setId(idForm);
}
}
但这并不好。谁能给我一个更好的解决办法?
一些有用的基准可以帮助你做出更好的决定:
While循环,For循环和迭代器性能测试
我试着像那样绕圈
// ArrayList tourists
for (Tourist t : tourists) {
if (t != null) {
t.setId(idForm);
}
}
但这并不好。谁能给我一个更好的解决办法?
一些有用的基准可以帮助你做出更好的决定:
While循环,For循环和迭代器性能测试
当前回答
for (Iterator<Tourist> itr = tourists.iterator(); itr.hasNext();) {
if (itr.next() == null) { itr.remove(); }
}
其他回答
for (Iterator<Tourist> itr = tourists.iterator(); itr.hasNext();) {
if (itr.next() == null) { itr.remove(); }
}
类似于@Lithium的答案,但不抛出“列表可能不包含类型null”错误:
list.removeAll(Collections.<T>singleton(null));
有一种简单的方法可以从集合中删除所有空值。必须将包含null的集合作为参数传递给removeAll()方法
List s1=new ArrayList();
s1.add(null);
yourCollection.removeAll(s1);
截至2015年,这是最好的方法(Java 8):
tourists.removeIf(Objects::isNull);
注意:对于固定大小的列表(例如使用Arrays.asList创建的列表),包括不可变列表,这段代码将抛出java.lang.UnsupportedOperationException。
我主要用这个:
list.removeAll(Collections.singleton(null));
但是在我学习了Java 8之后,我改用了这个:
List.removeIf(Objects::isNull);