- La clase implementa Comparable
- El método compareTo de la interfase Comparable indica que atributos se usaran para comparar.
import java.util.*;
public class Producto implements Comparable {
private String nombre;
private int cantidad;
public Producto(String s, int i) {
private int cantidad;
public Producto(String s, int i) {
nombre = s;
cantidad = i;
} cantidad = i;
public String toString(){
return ("Nombre: "+nombre+" Cantidad: "+cantidad);
}
public String getNombre() {
public String getNombre() {
return this.nombre;
}
public boolean equals( Object objeto ) {
public boolean equals( Object objeto ) {
// Indica en base a que atributos se iguala el objeto
if (objeto == null) return false;
Producto producto = (Producto)objeto;
if (this.getNombre().equals(producto.getNombre()) ) return true;
return false;
} if (objeto == null) return false;
Producto producto = (Producto)objeto;
if (this.getNombre().equals(producto.getNombre()) ) return true;
return false;
public int hashCode() {
// retorna un identificador unico del objeto.
return this.getNombre().hashCode();
return this.getNombre().hashCode();
}
public int compareTo( Object objeto ) {
public int compareTo( Object objeto ) {
// Indica en base a que atributos se compara el objeto
// Devuelve +1 si this es > que objeto
// Devuelve -1 si this es < que objeto
// Devuelve 0 si son iguales
Producto producto = (Producto)objeto;
String nombreObjeto = producto.getNombre().toLowerCase();
String nombreThis = this.getNombre().toLowerCase();
return( nombreThis.compareTo( nombreObjeto ) );
// Devuelve +1 si this es > que objeto
// Devuelve -1 si this es < que objeto
// Devuelve 0 si son iguales
Producto producto = (Producto)objeto;
String nombreObjeto = producto.getNombre().toLowerCase();
String nombreThis = this.getNombre().toLowerCase();
return( nombreThis.compareTo( nombreObjeto ) );
}
} - Un TreeSet no permite elementos duplicados.
- Un TreeSet mantiene la lista ordenada.
- El elemento a comparar debe contar con métodos equals, hashCode y compareTo.
MercadoTreeSet.java
import java.util.*;
public class MercadoTreeSet
{
public static void main(String args[])
{
{
// Definir 5 instancias de la Clase Producto
Producto pan = new Producto("Pan", 6);
Producto leche = new Producto("Leche", 2);
Producto manzanas = new Producto("Manzanas", 5);
Producto brocoli = new Producto("Brocoli", 2);
Producto carne = new Producto("Carne", 2);
Producto res = new Producto("Carne", 3);
// Definir un TreeSet
TreeSet lista = new TreeSet();
lista.add(pan);
lista.add(leche);
lista.add(manzanas);
lista.add(brocoli);
lista.add(carne);
lista.add(res);
// Imprimir contenido de TreeSet
// Aunque se agregan 6 elementos, el TreeSet solo contiene 5
// TreeSet no permite elementos duplicados,
// TreeSet detecta que el elemento "Carne" esta duplicado
// Notese que el orden del TreeSet refleja un orden ascendente
mostrarLista(lista);
// No es posible eliminar elementos por indice
// Un TreeSet solo elimina por valor de Objeto
lista.remove(manzanas);
mostrarLista(lista);
// Eliminar todos los valores del TreeSet
lista.clear();
mostrarLista(lista);
Producto pan = new Producto("Pan", 6);
Producto leche = new Producto("Leche", 2);
Producto manzanas = new Producto("Manzanas", 5);
Producto brocoli = new Producto("Brocoli", 2);
Producto carne = new Producto("Carne", 2);
Producto res = new Producto("Carne", 3);
// Definir un TreeSet
TreeSet lista = new TreeSet();
lista.add(pan);
lista.add(leche);
lista.add(manzanas);
lista.add(brocoli);
lista.add(carne);
lista.add(res);
// Imprimir contenido de TreeSet
// Aunque se agregan 6 elementos, el TreeSet solo contiene 5
// TreeSet no permite elementos duplicados,
// TreeSet detecta que el elemento "Carne" esta duplicado
// Notese que el orden del TreeSet refleja un orden ascendente
mostrarLista(lista);
// No es posible eliminar elementos por indice
// Un TreeSet solo elimina por valor de Objeto
lista.remove(manzanas);
mostrarLista(lista);
// Eliminar todos los valores del TreeSet
lista.clear();
mostrarLista(lista);
}
public static void mostrarLista(Collection lista) {
System.out.println(" Lista del mercado con " + lista.size() +
" productos");
for( Iterator it = lista.iterator(); it.hasNext();) {
" productos");
for( Iterator it = lista.iterator(); it.hasNext();) {
Producto producto = (Producto)it.next();
System.out.println(producto);
} System.out.println(producto);
}
}
muy bien explicado, perfecto!
ResponderEliminarGracias
excelente!!..gracias!!..me salvaste, muy bien explicado..
ResponderEliminarmuy a pleno! ;)
ResponderEliminarGracias es un ejemplo basico que aclara muchas dudas sobre su uso
ResponderEliminarGracias señor developer! es lo que estaba buscando para no hacer un cutrealgoritmo con arrays, muito sofisticado jajaj ;).
ResponderEliminarMuchas gracias, salvaste mi duda!
ResponderEliminar