Ejemplo comentado de como ordenar con Collections, usamos de base las clases del tutorial 4:
En la clase ordenador añadimos:
public class ordenador implements Comparable<ordenador>{ }
cambiamos int por Integer:
private Integer frecuencia, memoria;
Y escribimos el método señalando lo que vamos a comparar:
public int compareTo(ordenador o) {
return (frecuencia.compareTo(((ordenador) o).frecuencia));
}
En la clase programa1 añadimos:
import java.util.Collections;
Y después del bucle While, para que al terminar la lista la ordene con nuestro método:
Collections.sort(ordenadores);
Ahora al presentar los ordenadores los pondrá en orden ascendente de frecuencias.
Códigos completos:
Clase programa1:
import java.util.Collections;
import java.util.LinkedList;
import java.util.Scanner;
public class programa1 {
static private LinkedList<ordenador> ordenadores = new LinkedList<ordenador>();
public static void main(String[] args) {
ordenador cpu;
cpu = new ordenador("string", "string", 0, 0);
String procesador="procesador";
String salir = "salir";
while(!(procesador.equals(salir)))
{
Scanner entrada = new Scanner(System.in);
System.out.println("Introduzca tipo de procesador o escriba salir:");
procesador = entrada.nextLine();
if (procesador.equals(salir)) break;
System.out.println("Introduzca frecuencia en GHz:");
int frecuencia = entrada.nextInt();
System.out.println("Introduzca tipo de gráfica:");
entrada.next();
String grafica = entrada.nextLine();
System.out.println("Introduzca cantidad de memoria en Mb:");
int memoria = entrada.nextInt();
ordenadores.add(new ordenador(procesador, grafica, frecuencia, memoria));
}
Collections.sort(ordenadores);
for (ordenador o : ordenadores) //recorremos los objetos "o" de tipo ordenador de la lista ordenadores
{
System.out.println("Tiene un procesador de tipo " + o.getProcesador() + " a " + o.getFrecuencia() + " GHz");
System.out.println("Tiene una gráfica de tipo " + o.getGrafica() + "con " + o.getMemoria() + " Mb");
}
}
}
Clase ordenador:
public class ordenador implements Comparable<ordenador> {
private String procesador, grafica;
private Integer frecuencia, memoria;
public ordenador(String proce, String gra, int frec, int me)
{
procesador=proce;
grafica=gra;
frecuencia=frec;
memoria=me;
}
public String getProcesador() {
return procesador;
}
public void setProcesador(String procesador) {
this.procesador = procesador;
}
public String getGrafica() {
return grafica;
}
public void setGrafica(String grafica) {
this.grafica = grafica;
}
public int getFrecuencia() {
return frecuencia;
}
public void setFrecuencia(int frecuencia) {
this.frecuencia = frecuencia;
}
public int getMemoria() {
return memoria;
}
public void setMemoria(int memoria) {
this.memoria = memoria;
}
public int compareTo(ordenador o) {
return (frecuencia.compareTo(((ordenador) o).frecuencia));
}
}
Añadimos en la clase principal:
import java.util.Comparator;
Si queremos que sea en orden descendente cambiamos el collections.sort por este:
Collections.sort(ordenadores,new ordenar());
y creamos la clase ordenar en la clase principal:
class ordenar implements Comparator<ordenador> {
public int compare(ordenador o_1, ordenador o_2) {
return (-(o_1.compareTo(o_2)));
}
}
No hay comentarios:
Publicar un comentario