How Arraylist Works Internally In Java