小编典典

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

all

我尝试使用这样的循环

// ArrayList tourists

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

但这并不好。谁能建议我更好的解决方案?


一些有用的基准来做出更好的决定:

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


阅读 63

收藏
2022-06-28

共1个答案

小编典典

尝试:

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

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

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

如果您在 Arrays.asList 上使用它,它将引发UnsupportedException ,因为它为您提供不可变副本,因此无法修改。请参阅下面的代码。它创建可变副本并且不会抛出任何异常。

public static String[] clean(final String[] v) {
    List<String> list = new ArrayList<String>(Arrays.asList(v));
    list.removeAll(Collections.singleton(null));
    return list.toArray(new String[list.size()]);
}
2022-06-28