如何有效地从数组列表或字符串数组中删除所有空元素?

2022-08-31 06:06:56

我尝试使用这样的循环

// ArrayList tourists

for (Tourist t : tourists) {
    if (t != null) {     
        t.setId(idForm); 
    }   
}

但这并不好。任何人都可以建议我一个更好的解决方案吗?


一些有用的基准测试可以做出更好的决策:

同心循环、For 循环和迭代器性能测试


答案 1

尝试:

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

阅读 Java API。代码将抛出不可变列表(例如使用 创建);有关更多详细信息,请参阅此答案java.lang.UnsupportedOperationExceptionArrays.asList


答案 2

截至2015年,这是最好的方法(Java 8):

tourists.removeIf(Objects::isNull);

注意:此代码将抛出固定大小的列表(例如使用 Arrays.asList 创建),包括不可变列表。java.lang.UnsupportedOperationException


推荐