miércoles, 31 de agosto de 2011

Ejercicio función invertir

Implementa la siguiente función, utilizando un objeto de la clase Stack.
  • Nombre y parámetros: List<Point> invertir (Iterator<Point> i , Point p)
  • Retorna: List<Point> (realmente será un objeto ArrayList<Point>)
  • Tarea: Crea un ArrayList de objetos Point que contenga los puntos obtenidos con el iterador pero en orden inverso, excluyendo los puntos que sean iguales al recibido en el segundo parámetro.
  • Si el segundo parámetro es null, se excluyen los puntos (0,0) 
  • Excepciones: IllegalArgumentException en caso de que el iterator no nos diera ni un solo Punto o bien fuese null.
Se añade el programa principal con el que se probó la función.

public class EjercicioStack {
    public static void main (String[] args) {
        Point a = new Point(0,0);
        Point b = new Point(1,1);
        Point c = new Point(2,2);
        Point d = null;
        ArrayList<Point> puntos = new ArrayList<Point>();
        ArrayList<Point> puntosInv;
        puntos.add(a);
        puntos.add(b);
        puntos.add(c);
        System.out.println(puntos);
        Iterator<Point> it = puntos.iterator();
        puntosInv = (ArrayList<Point>) invertir(it, d);
        System.out.println(puntosInv);
    }
    public static List<Point> invertir (Iterator<Point> i, Point p) {
        Stack<Point> pila = new Stack<Point>();
        ArrayList<Point> puntos = new ArrayList<Point>();
        Point aux;
        if (i == null || !i.hasNext()) {
            throw new IllegalArgumentException();
        }
        if (p == null) {
            p = new Point(0, 0);
        }
        while (i.hasNext()) {
            aux = i.next();
            if (!aux.equals(p))
                pila.push(aux);
        }
        while (!pila.empty()) {
            puntos.add(pila.pop());
        }
        return puntos;
    }
}

No hay comentarios:

Publicar un comentario