现在有一个list 里面有null元素,list.add(0,"2");list.add(1,null);list.add(2,"2");
用List lis = new ArrayList();
lis.add(null);
list.removeAll(lis);
请教各位,这样做好么,老是感觉不好!
用List lis = new ArrayList();
lis.add(null);
list.removeAll(lis);
请教各位,这样做好么,老是感觉不好!
public static void main(String[] args) {
int list_num, rmv_num;
list_num = 100000;
rmv_num = 100;
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < list_num; i++) {
list.add(i % rmv_num);
} List<Integer> l = new LinkedList<Integer>();
for (int i = 0; i < rmv_num; i++) {
l.add(i);
} System.out.println("start size is: " + list.size());
long timestart = new Date().getTime();
list.removeAll(l);
long timeend = new Date().getTime();
System.out.println("need time(ms): " + (timeend - timestart));
System.out.println("end size is: " + list.size());
}
}
------------------------------------------
LinkedList:
list_num rmv_num time(ms)
100000 1 47
100000 100 203
100000 1000 1672
10000 1000 234ArrayList:
list_num rmv_num time(ms)
100000 100 15953
10000 100 219
100000 1 12516
10000 1 187
------------------------------------------以上代码先在list中插入list_num个对象,然后再将其全部移除,这是“很坏”的情况,上面的数据显示了两种常用的List的效率对比。可以看出,ArrayList在随list_num的增加而极剧增加;而LinkedList则比较像m*n。
因为ArrayList是数组,在对象的删除时,要进行大量的数据移动,降低了效率。在List中如果要排序的话,最好还是避免null吧。