You're probably looking for the
ArrayDeque which supports push/pop style access from both ends of the list efficiently.
Vector - these are synchronized, which implies generally pointless overhead.
ArrayList is also fine; however, you'd need to implement your own (trivial) pop method since it is not provided by the class itself.
ArrayList does permit indexed access, which