Most used data structure in Java is List. List is an Interface and a type of Collection. Storage and efficiency depends upon how a List's method has been defined.
Vector
Since java 1.0. Synchronized. Items inserted are ordered. After Java 1.2 Vector was included in Collection framework under List. Its size grows or shrinks depending on number of Objects in the Vector. Iterator and ListIterator of Vector is failfast while Enumeration of Vector's Objects are not.
ArrayList
Since java 1.2. Not Synchronized. Items inserted are ordered. ArrayList is based on Arrays. Each Object is at an index of an Array. Adding an item may increase List size by half times of its current size. ArrayList is not good if memory is on priority while it gives much better performance than LinkedList.
LinkedList
Since java 1.2. Not Synchronized. Items inserted are ordered. Each object in a LinkedList keeps reference to its next Object. The last Object points to null. If memory has an issue, LinkedList is best to use. It takes exactly as much memory as needed.