package ejercicio3; import java.text.ParseException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; /** * Clase que utiliza la clase Persona y la prueba. * * @author Miguel Sallent * */ public class OperaPersona { /** * Método principal * * @param args argumentos recibidos por línea de comandos */ public static void main(String[] args) { //NOTA: el método MAIN no debe ser modificado por el alumno try { //PARTE 1: creamos una lista desordenada y la mostramos System.out.println("======= PARTE 1 ======="); System.out.println(); Persona p1 = new Persona("0000001A","08/08/1978"); Persona p2 = new Persona("0000008B","11/02/1937"); Persona p3 = new Persona("0000003C","01/08/1978"); Persona p4 = new Persona("0000007D","04/12/1987"); Persona p5 = new Persona("0000003E","04/03/1987"); ArrayList listaPersonas = new ArrayList(); listaPersonas.add(p1); listaPersonas.add(p2); listaPersonas.add(p3); listaPersonas.add(p4); listaPersonas.add(p5); System.out.println("Lista desordenada:"); System.out.println(); muestraLista(listaPersonas); //PARTE 2: ordenación natural (orden por NIF, no se tiene en cuenta fecha de nacimiento): System.out.println(); System.out.println("======= PARTE 2 ======="); System.out.println(); //Primero comprobamos que el método equals está correctamente implementado: //Dos personas son iguales si y sólo si son iguales sus NIFs: Object p6 = new Persona("0000001A","08/08/1978"); Object p7 = new Persona("0000001A","03/02/1978"); Object p8 = new Persona("0000001C","08/08/1978"); //probamos con una cadena de texto que se crea en tiempo de ejecución, no de compilación: Object p9 = new Persona(new String("0000001A"),"08/08/1978"); if (p6.equals(p7) && !p6.equals(p8)) { if (p6.equals(p9)) { System.out.println("El método equals de la clase Persona funciona correctamente, enhorabuena."); } else { System.out.println("El método equals de la clase Persona no funciona correctamente. Para comparar cadenas de texto debes " + "usar el método equals, no el operador ==. Prueba de nuevo."); } } else { System.out.println("El método equals de la clase Persona no funciona correctamente, prueba de nuevo."); } //Para comprobar si el método compareTo esté correctamente implementado, descomentar este código: /* Persona p10 = new Persona("0000001A","08/08/1978"); if (p1.compareTo(p10) == 0 && p1.compareTo(p2) < 0 && p2.compareTo(p1) > 0) { System.out.println("El método compareTo de la clase Persona funciona correctamente, enhorabuena."); } else { System.out.println("El método compareTo de la clase Persona no funciona correctamente, prueba de nuevo."); } */ //Finalmente ordenamos y mostramos System.out.println(); System.out.println("Lista ordenada por orden natural (NIF):"); System.out.println(); ordenaPorOrdenNatural(listaPersonas); muestraLista(listaPersonas); //PARTE 3: orden por fecha de nacimiento: System.out.println(); System.out.println("======= PARTE 3 ======="); System.out.println(); System.out.println("Lista ordenada por fecha de nacimiento:"); System.out.println(); ordenaPorFechaNacimiento(listaPersonas); muestraLista(listaPersonas); } catch (ParseException e) { System.out.println("Error en el formato de fecha" + e); e.printStackTrace(System.out); } } //Estos tres métodos a continuación son los que debe implementar el alumno /** * Recorre una lista de personas y las muestra por pantalla. * * @param listaPersonas la lista de personas a mostrar */ public static void muestraLista(ArrayList listaPersonas){ //A implementar por el alumno } /** * Ordena la lista de personas recibida como argumento por su orden natural. * * @param listaPersonas la lista de personas a ordenar */ public static void ordenaPorOrdenNatural(ArrayList listaPersonas){ //A implementar por el alumno } /** * Ordena la lista de personas recibida como argumento ascendentemente * por fecha de nacimiento. * * @param listaPersonas la lista de personas a ordenar */ public static void ordenaPorFechaNacimiento(ArrayList listaPersonas){ //A implementar por el alumno } }