I enhanced/tested the coding I found on ArrayList initialized/accessed using Singleton class
import java.util.ArrayList;
public class SingletonArrayList {
    private static SingletonArrayList mInstance;
    private static ArrayList<String> list = null;
    public static SingletonArrayList getInstance() {
        if (mInstance == null)
            mInstance = new SingletonArrayList();
        SingletonArrayList.list.add("a");
        SingletonArrayList.list.add("b");
        SingletonArrayList.list.add("c");
        return mInstance;
    }
    private SingletonArrayList() {
        list = new ArrayList<String>();
    }
    // retrieve array from anywhere
    public ArrayList<String> getArray() {
        return SingletonArrayList.list;
    }
}
Then I made a testclass where I call the above singleton two times:
import java.util.ArrayList;
public class TestSingletonArrayList {
    public static void main(String[] args) {
        ArrayList<String> array = SingletonArrayList.getInstance().getArray();
        for (int i = 0; i < array.size(); i++) {
            System.out.println(array.get(i));
        }
        System.out.println("-----------");
        ArrayList<String> array2 = SingletonArrayList.getInstance().getArray();
        for (int i = 0; i < array2.size(); i++) {
            System.out.println(array2.get(i));
        }
    }
}
The output is:
a
b
c
-----------
a
b
c
a
b
c
This seems very strange. I expected that the second call of the singleton class will only return a,b,c and NOT a,b,c,a,b,c
What is wrong? I expected only a,b,c as it is a singleton
Thanks, regards Mario
 
     
    