No its not needed. Same arraylist will get initialized twice instead. So what's going to happen is:
When you will try say instantiating your class, it will first try to create instance which is defined outside your constructor.
Next when your constructor is called you are again overriding that reference which was created earlier with the one that you are creating in constructor.
If you want to enforce that you can't instantiate either knowingly or unknowingly, use final keyword when you define it as a class member. In this way you wont end up creating object in constructor.
Even if you don't instantiate final member variable, compiler wont be happy and will ask you to instantiate it in your default constructor that you created.