Uso de arrays con objetos

Las funciones anteriores también se pueden utilizar con arrays de objetos. En particular, el método Arrays.fill() rellena un array, total o parcialmente, con referencias a un objeto dado. En el caso de utilizar el método Arrays.sort() la clase debe implementar la interfaz Comparable (ya explicaré las interfaces en profundidad más adelante), como en el siguiente ejemplo, que implementa una clase Alumno, que tiene un atributo entero. Los alumnos se ordenarán de forma ascendente por su atributo número. La clase quedará así:

public class Alumno implements Comparable<Alumno> {

    private String nombre;
    private String apellidos;
    private int anyoNacimiento;
    private Direccion direccion;
    private int numero;
    
    public Alumno(String nombre, String apellidos, int anyoNacimiento, Direccion direccion) {
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.anyoNacimiento = anyoNacimiento;
        this.direccion = direccion;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApellidos() {
        return apellidos;
    }

    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }

    public int getAnyoNacimiento() {
        return anyoNacimiento;
    }

    public void setAnyoNacimiento(int anyoNacimiento) throws AnyoFueraDeRangoException {
        if (anyoNacimiento < 1910 || anyoNacimiento > 2005) {
            throw new AnyoFueraDeRangoException(“Esa edad es imposible”);
        }
        this.anyoNacimiento = anyoNacimiento;
    }

    public Direccion getDireccion() {
        return direccion;
    }

    public void setDireccion(Direccion direccion) {
        this.direccion = direccion;
    }

    @Override
    public String toString() {
        return “Alumno [nombre=” + nombre + “, apellidos=” + apellidos + “, anyoNacimiento=” + anyoNacimiento
                + “, direccion=” + direccion + “]”;
    }

    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    class Direccion {
        String calle;
        int numero;

        public Direccion(String calle, int numero) {
            this.calle = calle;
            this.numero = numero;
        }

        @Override
        public String toString() {
            return “Direccion [calle=” + calle + “, numero=” + numero + “]”;
        }

    }

    @Override
    public int compareTo(Alumno alum) {
        if(numero>alum.getNumero()){
            return 1;
        }
        if(numero<alum.getNumero()){
            return -1;
        }
        return 0;
    }
    
    

}

En este caso, para ordenar un array de alumnos se utilizaría:

Alumno[] alumnos = new Alumno[40];

//Tras rellenar el array con alumnos:

Arrays.sort(alumnos);

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s