Originariamente inviato da Dreamer89
Quali sono i modi possibili di ordinamento?
Ma lo devi specificare tu, implementando Comparator in una classe a sé stante!!! L'ordine lo stabilisci tu implementando in modo opportuno il compare().
Ok, senti, esempio completo ... così chiarisco.
codice:
PriorityQueue<Integer> pq = new PriorityQueue<Integer> ();
pq.offer (12);
pq.offer (5);
pq.offer (8);
pq.offer (14);
while (!pq.isEmpty ())
System.out.println (pq.poll ());
L'ordine di uscita (con cui sono stampati) non è l'ordine con cui sono stati inseriti!! Integer implementa Comparable, quindi PriorityQueue si basa su quello. E il Comparable di Integer stabilisce che l'ordine dei valori è crescente. Quindi l'ordine di stampa è 5 8 12 14
Voglio ad esempio che il valore 12 venga sempre prima di tutti gli altri.
codice:
class MioComp implements Comparator<Integer>
{
public int compare (Integer i1, Integer i2)
{
int c = i1.compareTo (i2);
if (c != 0)
{
if (i1 == 12)
c = -1;
else if (i2 == 12)
c = +1;
}
return c;
}
}
Poi
PriorityQueue<Integer> pq = new PriorityQueue<Integer> (1, new MioComp());
....uguale a prima....
L'ordine di uscita stavolta è 12 5 8 14