I'm trying to understand why the native java mode is not comparing, I do not know where I'm going wrong.
MAIN
// EXERCICIO PARA COMPARAR DOIS OBJETOS, USANDO CLASSE NATIVA DE COMPARAÇÃO DO JAVA
public static void main(String[] args) {
FilaComPrioridade<Paciente> fila = new FilaComPrioridade<>();
// CLASSE ANONIMA DENTRO DO NOSSO PROJETO.
Queue<Paciente> filaComPrioridade = new PriorityQueue<>(new Comparator<Paciente>() {
@Override
public int compare(Paciente p1, Paciente p2) {
return Integer.valueOf(p1.getPrioridade()).compareTo(p2.getPrioridade());
}
});
filaComPrioridade.add(new Paciente("A", 2));
filaComPrioridade.add(new Paciente("B1", 1));
filaComPrioridade.add(new Paciente("B2", 1));
filaComPrioridade.add(new Paciente("B3", 1));
filaComPrioridade.add(new Paciente("B4", 1));
filaComPrioridade.add(new Paciente("C", 3));
fila.enfileira(new Paciente("A", 2));
fila.enfileira(new Paciente("B1", 1));
fila.enfileira(new Paciente("B2", 1));
fila.enfileira(new Paciente("B3", 1));
fila.enfileira(new Paciente("B4", 1));
fila.enfileira(new Paciente("C", 3));
System.out.println(filaComPrioridade);
System.out.println(fila);
}
}
Printing
[Patient [name = B1, priority = 1], Patient [name = B3, priority = 1], Patient [name = B2, priority = 1], Patient [name = A, priority = 2], Patient [name = B4, priority = 1], Patient [name = C, priority = 3]]
[Patient [name = B1, priority = 1], Patient [name = B2, priority = 1], Patient [name = B3, priority = 1], Patient [name = B4, priority = 1], Patient [name = A, priority = 2], Patient [name = C, priority = 3]]
Priority Queue Class:
package pt.estruturadedados.base.fila;
public class FilaComPrioridade<T> extends Fila<T> {
@Override
public void enfileira(T elemento) {
Comparable<T> chave = (Comparable<T>) elemento;
int i;
for (i = 0; i < this.tamanho; i++) {
if (chave.compareTo(this.elementos[i]) < 0) {
break;
}
}
this.adiciona(i, elemento);
}
}
CompareTo
in Patient Class of Manual "NON NATIVE" (Second Printing)
@Override
public int compareTo(Paciente o) {
return Integer.valueOf(this.getPrioridade()).compareTo(o.getPrioridade()); //Forma mais elegante de fazer.
}