Currently, I am looking the following data structure.
- Fast to insert at tail.
- Fast to remove from head.
- Able to perform random access.
I realize ArrayBlockingQueue is good at (1) and (2), and ArrayList is good at (3). Is there single data structure from standard library/ Apache libraries/ Google libraries, which enable me to have all 3 requirements at once?
I think the best datastructure for your case is a ringbuffer/circular buffer. The ringbuffer performs all three operations in constant time.
An implementation can be found here and many others here
edit: the problem with ringbuffers is that you should know at the beginning how many elements are in that buffer in worst-case. But there also exist dynamic ringbuffers.