All I am doing is add three strings to a Java PriorityQueue and then print them out
This is my code:
import java.util.*;
import java.lang.*;
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
PriorityQueue<String> pq=new PriorityQueue<String>();
pq.add("abc");
pq.add("ability");
pq.add("aberdeen");
String s="ability";
System.out.println(s.compareTo("aberdeen"));
System.out.println(pq);
}
}
And this is the output:
4
[abc, ability, aberdeen]
Shouldn’t this be abc, aberdeen, ability instead. since that’s the correct alphabetic order?
From the documentation of
PriorityQueue.iterator():That’s what
toString()is using to construct the string representation, as the implementation is inherited fromAbstractCollection:Try dequeuing the results instead, and you’ll get the expected order:
Output: