Note that there are some explanatory texts on larger screens.

plurals
  1. POPriorityQueue retrieve elements sorted
    text
    copied!<p>I'd like to have a sorted collection in java that I can iterate over it. From what I read a PriorityQueue is the thing that I need but hen I can't figure out how to retrieve the elements ins a sorted manner...</p> <p>I did this test example:</p> <p>Main.java</p> <pre><code>import java.util.PriorityQueue; public class Main { public static void main(String[] args) { PriorityQueue&lt;Object&gt; queue=new PriorityQueue&lt;Object&gt;(); Object o1=new Class1("o1"); Object o2=new Class2("o2"); Object o3=new Class1("o3"); Object o4=new Class1("o4"); Object o5=new Class2("o5"); Object o6=new Class2("o6"); Object o7=new Class1("o7"); Object o8=new Class2("o8"); Object o9=new Class1("o9"); Object o0=new Class1("o0"); queue.add(o7); queue.add(o4); queue.add(o3); queue.add(o8); queue.add(o5); queue.add(o1); queue.add(o2); queue.add(o9); queue.add(o0); queue.add(o6); for (Object object : queue) { System.out.println(object); } } } </code></pre> <p>Class1.java:</p> <pre><code>public class Class1 implements Comparable&lt;Object&gt;{ String name; public Class1(String name) { super(); this.name = name; } @Override public String toString() { return "Class1 [name=" + name + "]"; } @Override public int compareTo(Object o) { return (o instanceof Class1)?compareTo((Class1)o):compareTo((Class2)o); } public int compareTo(Class1 o){ return name.compareTo(o.name); } public int compareTo(Class2 o){ return name.compareTo(o.name2); } } </code></pre> <p>Class2.java:</p> <pre><code>public class Class2 implements Comparable&lt;Object&gt;{ String name2; public Class2(String name) { super(); this.name2 = name; } @Override public String toString() { return "Class2 [name=" + name2 + "]"; } @Override public int compareTo(Object o) { return (o instanceof Class1)?compareTo((Class1)o):compareTo((Class2)o); } public int compareTo(Class1 o){ return name2.compareTo(o.name); } public int compareTo(Class2 o){ return name2.compareTo(o.name2); } } </code></pre> <p>This returns:</p> <pre><code>Class1 [name=o0] Class1 [name=o1] Class2 [name=o2] Class2 [name=o5] Class2 [name=o6] Class1 [name=o4] Class1 [name=o3] Class1 [name=o9] Class2 [name=o8] Class1 [name=o7] </code></pre> <p>What do I need to do to iterate in a sorted fashion over this collection?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload