例如说我有一个包含以下值的列表
{"A", null, null, "B", null, "C", null, "D", "E", null}
将其压缩到
的最有效方法是什么{"A", "B", "C", "D", "E"}
有没有办法快速高效地完成这项工作,而无需完全创建新列表。如果压缩列表看起来像
,那也没关系{"A", "B", "C", "D", "E", null, null, null, null, null}
答案 0 :(得分:11)
就代码效率而言,我所知道的最有效率是
list.removeAll( Collections.singleton(null) );
答案 1 :(得分:1)
可以使用此简单循环删除所有null元素
while(aList.remove(null)) {/*do nothing */};
答案 2 :(得分:0)
如果它真的是一个Java List(而不是一个数组),它会在你删除一个元素时自动重新链接List中的元素。
所以在{A,B,C,D}
如果我调用list.remove(C),列表现在应该看起来像{A,B,D}
答案 3 :(得分:0)
如果你想保留相同的列表,你可以这样做。
int end = 0;
for(int i = 0; i < list.size(); i++) {
Object o = list.get(i);
if (o != null)
list.set(end++, o);
}
// remove the trailing values.
list.sublist(end, list.size()).clear();
答案 4 :(得分:0)
这也应该有效:
list.removeAll(Arrays.asList(null));