Colas de prioridad - Clase PriorityQueue - Ayuda
Publicado por Sergio (10 intervenciones) el 10/06/2010 22:40:52
Tengo una clase Cliente sencilla sobrescribiendo compareTo
public class Cliente implements Comparable {
// public class Cliente {
private String nombre;
private String email;
Cliente() {
nombre = "- sin especificar-";
email = "- sin especificar-";
}
Cliente(String n, String e) {
nombre = n;
email = e;
}
public String getNombre() {
return nombre;
}
public void setNombre(String n) {
nombre = n;
}
public String getEmail() {
return email;
}
public void setEmail(String e) {
email = e;
}
public int compareTo(Object o) {
Cliente e = (Cliente)o; // DownCasting
return nombre.compareTo(e.getNombre());
}
public boolean equals(Object o) {
if (!(o instanceof Cliente)) return false;
Cliente c = (Cliente)o;
if (nombre.equals(c.getNombre()))
return true;
else
return false;
}
public int hashCode() {
return nombre.hashCode();
}
}
Y ahora añado elementos a una cola de prioridad en una clase de prueba
import java.util.*;
public class Test {
public static void main(String... args) {
Cliente c1 = new Cliente("Sergio", "[email protected]");
Cliente c2 = new Cliente("Alberto", "[email protected]");
Cliente c3 = new Cliente("Pedro", "[email protected]");
Cliente c4 = new Cliente("Berto", "[email protected]");
Cliente c5 = new Cliente("Juan", "[email protected]");
Queue<Cliente> cola = new PriorityQueue<Cliente>();
cola.add(c1);
cola.add(c2);
cola.add(c3);
cola.add(c4);
cola.add(c5);
for(Cliente c : cola)
System.out.println(c.getNombre() + " --> " + c.getEmail());
}
}
Y esta es la salida y no lo entiendo ...
Alberto --> [email protected]
Berto --> [email protected]
Pedro --> [email protected]
Sergio --> [email protected]
Juan --> [email protected]
Porque Juan no tiene mas prioridad debido a la implementación de Comparable que
Pedro y Sergio :-S no lo entiendo. Si alguien me puede ayudar es basico para las preguntas de examen de la certificación. Gracias.
public class Cliente implements Comparable {
// public class Cliente {
private String nombre;
private String email;
Cliente() {
nombre = "- sin especificar-";
email = "- sin especificar-";
}
Cliente(String n, String e) {
nombre = n;
email = e;
}
public String getNombre() {
return nombre;
}
public void setNombre(String n) {
nombre = n;
}
public String getEmail() {
return email;
}
public void setEmail(String e) {
email = e;
}
public int compareTo(Object o) {
Cliente e = (Cliente)o; // DownCasting
return nombre.compareTo(e.getNombre());
}
public boolean equals(Object o) {
if (!(o instanceof Cliente)) return false;
Cliente c = (Cliente)o;
if (nombre.equals(c.getNombre()))
return true;
else
return false;
}
public int hashCode() {
return nombre.hashCode();
}
}
Y ahora añado elementos a una cola de prioridad en una clase de prueba
import java.util.*;
public class Test {
public static void main(String... args) {
Cliente c1 = new Cliente("Sergio", "[email protected]");
Cliente c2 = new Cliente("Alberto", "[email protected]");
Cliente c3 = new Cliente("Pedro", "[email protected]");
Cliente c4 = new Cliente("Berto", "[email protected]");
Cliente c5 = new Cliente("Juan", "[email protected]");
Queue<Cliente> cola = new PriorityQueue<Cliente>();
cola.add(c1);
cola.add(c2);
cola.add(c3);
cola.add(c4);
cola.add(c5);
for(Cliente c : cola)
System.out.println(c.getNombre() + " --> " + c.getEmail());
}
}
Y esta es la salida y no lo entiendo ...
Alberto --> [email protected]
Berto --> [email protected]
Pedro --> [email protected]
Sergio --> [email protected]
Juan --> [email protected]
Porque Juan no tiene mas prioridad debido a la implementación de Comparable que
Pedro y Sergio :-S no lo entiendo. Si alguien me puede ayudar es basico para las preguntas de examen de la certificación. Gracias.
Valora esta pregunta


0