【发布时间】:2015-07-23 09:35:46
【问题描述】:
以下是删除空值的两种方法,哪一种是最好的方法?
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()]);
}
public static String[] clean(final String[] v) {
List<String> list = new ArrayList<String>(v.length);
for (String aString : v)
{
if (aString != null)
{
list.add(aString);
}
}
return list.toArray(new String[list.size()]);
}
【问题讨论】:
-
两者的最终结果相同。 “更好”是什么意思?处理时间?内存使用情况?可读性?
-
我会让 List 类处理它。即使用第一个。不过,两者看起来都是对性能的巨大浪费。
-
研究你的建议,真正的问题是How to remove
nullelements from a list。我链接到的问题建议了您的第一种方法。 -
您还可以做一些 Java 8 技巧。同样,这取决于您认为哪种方法比另一种方法更好。
-
在第二个例子中,为什么你初始化你的
list和v一样大小?这不会删除您的null值,还是我错过了什么?