Regarding constructors
PriorityQueue already have a zero argument constructor. You can see this yourself
easily if you read the javadocs. Whether or not this suits your purpose I can't say. It
does require that you use a type that implements comparable (e.g. String, Integer)
otherwise the queue will have no way of knowing how to order the elements.
capacity in the case of PriorityQueue is not a max capacity, but just a hint about
how many elements you think will be in the queue at the same time. It has only performance
implications, the semantics of they queue are completely independent of this.
Storage and retrieval semantics
The values are stored (inserted) in any order but are retrieved in order. That is the
point of a priority queue. A list that is automatically sorted every time you append to
it will give you exactly the same semantics as javas PriorityQueue. The list implementation would be very inefficient thought, so that's why you use a heap instead.
I'm not sure if this is a response to what you are asking, so if it's not please
clarify what you are confused about.