Necesito agregar a mi archivo un metodo para ordenar - JAVA

Iniciado por JAZzZ, 5 Agosto 2017, 19:40 PM

0 Miembros y 1 Visitante están viendo este tema.

JAZzZ

Tengo los siguientes archivos:

Clase Principal:

Código (java) [Seleccionar]
package prueba;

import clases.*;

public class Principal {

 public static void main(String[] args) {
   Persona aux[]=new Persona[3];
   aux[0] = new Persona("Pedro", 1980);
   aux[1] = new Persona("Maria", 1990);
   aux[2] = new Persona("Juan", 1995);
   
   
   ArregloPersonas ap=new ArregloPersonas(aux,3);
   System.out.println(ap.toString());
   System.out.println("Edad promedio: " + ap.getEdadPromedio());
   //Consultando edad de una persona
   String n="Carlos";
   int e=ap.consultaEdad(n);
   if (e != 0)
     System.out.println("La edad de " + n + " es " + e + " años");
   else
     System.out.println("No se hallo la persona");
   //Nombre de la persona de mayor edad
   System.out.println("Persona de mayor edad: " + ap.nombreMayor());
   
   //Listado de personas ordenados alfabeticamente
   
   
 }
 
}



Arrego llamado: ArregloPersonas:

Código (java) [Seleccionar]
package clases;

public class ArregloPersonas {

 private Persona lista[];//arreglo
 private int tamanio;

 public ArregloPersonas(Persona[] lista, int tamanio) {
   this.lista = lista;
   this.tamanio = tamanio;
 }

 public ArregloPersonas() {
   this.lista = new Persona[5];
   this.tamanio = 5;
   for (int i = 0; i < this.tamanio; i++) {
     lista[i] = new Persona();
   }
 }

 public Persona[] getLista() {
   return lista;
 }

 /**
  * @param lista the lista to set
  */
 public void setLista(Persona[] lista) {
   this.lista = lista;
 }

 /**
  * @return the tamanio
  */
 public int getTamanio() {
   return tamanio;
 }

 /**
  * @param tamanio the tamanio to set
  */
 public void setTamanio(int tamanio) {
   this.tamanio = tamanio;
 }

 @Override
 public String toString() {
   String texto = "";
   for (int i = 0; i < lista.length; i++) {
     texto += lista[i].toString() + ","
       + lista[i].getEdad() + "\n";
   }
   return texto;
 }

 public double getEdadPromedio() {
   int s = 0;
   for (int i = 0; i < lista.length; i++) {
     s += lista[i].getEdad();
   }
   return (double) s / lista.length;
 }

 public int consultaEdad(String nombre) {
   int r = 0, c = 0;
   while (c < lista.length && !nombre.equals(lista[c].getNombres())) {
     c++;
   }
   if (c < lista.length) {
     r = lista[c].getEdad();
   }
   return r;
 }

 //Metodo que retorne el nombre de la persona de mayor edad
 public String nombreMayor() {
   String r = null;
   int mayor = 0;
   for (int i = 0; i < lista.length; i++) {
     if (lista[i].getEdad() > mayor) {
       mayor = lista[i].getEdad();
       r = lista[i].getNombres();
     }
   }
   return r;
 }
 
 //metodo de ordenacion
 

}


Quiero agregar el Listado de personas ordenados alfabeticamente, tengo que agregar en el Arreglo y en la Clase PRincipal; AYUDA PLEASE!!!!


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex

ivancea96

Tienes el método "Arrays.sort(array, comparator)". Existe el método sin el segundo parámetro, pero dado que tu clase Persona no es comparable (intuyo), hay que pasarle un comparador.

El comparador es una clase anónima, sin más:

Código (java) [Seleccionar]
Arrays.sort(array, new Comparator<Persona>() {
    @Override
    public int compare(Persona p1, Persona p2) {
        return p1.getNombres().compareTo(p2.getNombres());
    }
});


Intuyo que getNombres es el método mediante el cual obtienes el nombre con el cual ordenar.
compare y compareTo retornan 0 si son iguales, un número negativo si el primero es menor o un número positivo si el primero es mayor.

"Arrays.sort" llamará a "Comparator.compare" cada vez que necesite comparar dos elementos.

Y bueno, dónde aplicar este "Arrays.sort" ya queda a tu elección.