问题描述
List list = new ArrayList();list里有若干元素我现在想拿到一个空的list,是用list.clear()好,还是直接 list = new ArrayList();好。场景是在for循环里。PS. clear的实现其实也是遍历list内数组将各个元素赋值null,让gc去回收每个元素。
解决方案
尽量不要去重复创建对象在循环里,因为创建一个list需要分配内存并且需要分配一个默认大小集合这些都需要很大的开销,而清除与它比起来差别还是挺大的,你也可以自己测试下
解决方案二:
clear比较好。不然堆上面都是这些类了。
解决方案三:
从效率上来说差别不大,一般不用考虑。这两种方法最大的差别是,clear()后当前的变量和所有引用到这个list的变量都指向同一个空的list,而如果你new了一个list后再赋值,则当前的变量变为一个空list,而其他以前引用到初始list的则不受影响,还是之前存有数据的list。
时间: 2024-08-17 14:54:56