During my C learning days, when I had implemented a Queue, I implemented them on top of a LinkedList. So essentially I had two pointers (front and rear) for the Queue operations on top of LinkedList, or better one front pointer on top of a CircularLinkedList.
I am learning the Java Collections Framework, and I observe that the design has completely disjointed the List and Queue interfaces, and the implementations branches out in following fashion –

I think AbstractQueue should have been subclassed somewhere inside AbstractList. Maybe not inside ArrayList, because I do not want random access to elements, but maybe inside AbstractSequentialList, hmm? (I realize, I could be completely wrong here)
This sounds like something done for implementation flexibility: a queue doesn’t have to be implemented as a list (in particular a priority-queue is almost certainly a heap underneath, which is a much more random-access structure than a list can offer).