ArrayList声明和处理

时间:2014-03-24 09:06:29

标签: java arraylist

我经常在我的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清除它然后如何? }

2 个答案:

答案 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状态。

无论哪种方式,内存只会被垃圾收集器清除。