LinkedHashSet and LinkedHashMap both are ordered collections (they maintain insertion order). So their iterators iterate over their elements in insertion order. Both of these classes inherit the toString method from AbstractCollection class. The documentation of the toString method in AbstractCollection class says
The string representation consists of a list of the collection's elements in the order they are returned by its iterator, enclosed in square brackets ("").
So the toString method for both of them will reflect the ordering...
Prints [1, 2, 4, 3]   . Because PriorityQueue does not reflect ordering in iterator and toString. Ordering is reflected only by peek,poll,remove methods.
PriorityQueue reflects the natural ordering or by the order mentioned by given comparator in its functions, iterator and toString method. As even your code is mentioning the same. you just put not by mistake in the above quote.
I think what you have mentioned is wrong and what Sharmila has written is correct. PriorityQueue will never reflect the order if the elements are printed using the iterator or toString. The order is determined by natural ordering or by a Comparator and can be seen by the peek(), poll(), remove() methods.