我经常在我的Java软件中使用ArrayList,我坚持认为该程序必须尽可能干净。
我在ArrayList变量声明和用法中存在这种歧义。
那么,在这三个ArrayList用法中,我必须选择哪种正确方法?
案例1:
List<Object> l = some_function();
案例2:
List<Object> l = new ArrayList<Object>();
l = some_function();
//staff
l.clear()
案例3:
List<Object> l = null;
l = some_function();
//staff
l.clear()
功能:
List<Object> some_function(){
List<Object> list = new AyyarList<Object>();
//Staff
return list;
}
关于该功能的问题是:
java会自动清除列表变量,还是让我使用clear()
API清除它然后如何?
}
答案 0 :(得分:3)
在我看来,案例1更好。第二种情况创建一个不必要的ArrayList
对象,当您分配方法返回值时,该对象将丢失。
java会自动清除列表变量,还是让我清理它 使用clean()API以及如何使用?
Java不会清除您的列表,您必须清除它,检查API,ArrayList#clear()
如果在函数内声明了列表,如何手动清除列表 我应该在函数之外使用它(它的输出)
您必须将返回的列表分配到临时列表,然后您可以清除列表。
List<Object> returnedList = some_function();
//stuff
returnedList.clear()
List<Object> some_function() {
List<Object> list = new AyyarList<Object>();
//Stuff
return list;
}
答案 1 :(得分:2)
在我看来,案例1更好。
List<Object> l = some_function();
不需要在第二种情况下为变量赋值然后覆盖它。
除非您需要重新使用l
变量,否则我不建议您使用clear。因为内存是由垃圾收集器异步清除的,而不是像clear()这样的库函数直接清除。 clear只会将它们全部清空,并相应地更新ArrayList状态。
无论哪种方式,内存只会被垃圾收集器清除。