Search code examples
javaperformancelistarraylistnew-operator

Java clearing a list by creating a new instance


I was looking through Java code, and I came across this code:

list = new ArrayList();
uselist(list);

if (condition)
   list = new ArrayList();

What's the use of this, as opposed to simply using the clear() method of ArrayLists.

is using the new command to clear a list is ok and is it faster than clearing a list ?

i am using java version 1.6


Solution

  • Do note that clearing and re-instantiating a list is not the same thing!

    Consider this example:

    a = new ArrayList();
    a.add("Hello")
    b = a;
    a = new ArrayList();   // a is now empty while b contains hello!
    

    Versus

    a = new ArrayList();
    a.add("Hello")
    b = a;
    a.clear();            // Both a and b are now empty.
    

    If the side-effects (shared references) are not an issue, then it is just two ways of clearing a list. It should probably not be a performance issue unless this is called millions of times.