Paso a dejar mi solución al ejercicio CU00919C del tutorial pdf de programación Java avanzada, espero les sea de utilidad
package claseCU00919C;
public class Animal {
	private String especie;
	private String nombre;
	private double peso;
	private int patas;
	public Animal(String pEspecie, String pNombre, double pPeso, int pPatas) {
		this.especie = pEspecie;
		this.nombre = pNombre;
		this.peso = pPeso;
		this.patas = pPatas;
	}
	public String toString() {
		return "Especie: " + especie + ", Nombre: " + nombre + ", Peso: " + peso + ", patas: " + patas;
	}
}
package claseCU00919C;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
public class ListaDeAnimales {
	private ArrayList<Animal> listaDeAnimales = null;
	public ArrayList<Animal> getListaDeAnimales() {
		return listaDeAnimales;
	}
	public ListaDeAnimales() {
		this.listaDeAnimales = new ArrayList<Animal>();
	}
	public Iterator<Animal> iterator() {
		return new MiIteradorDeAnimales();
	}
	public Iterator<Animal> retorna() {
		return listaDeAnimales.listIterator();
	}
	public String toString() {
		return listaDeAnimales.toString();
	}
	protected class MiIteradorDeAnimales implements Iterator<Animal> {
		public int posicion = 0;
		boolean permiteBorrar = false;
		@Override
		public boolean hasNext() {
			return posicion < listaDeAnimales.size();
		}
		@Override
		public Animal next() {
			Animal aux = listaDeAnimales.get(posicion);
			permiteBorrar = true;
			posicion++;
			return aux;
		}
		public void remove() {
			listaDeAnimales.remove(posicion - 1);
			posicion--;
			permiteBorrar = false;
		}
	}
}
package claseCU00919C;
import java.util.Iterator;
import java.util.Scanner;
public class Programa {
	public static void main(String[] args) {
		Scanner entradaTeclado = new Scanner(System.in);
		ListaDeAnimales la = new ListaDeAnimales();
		la.getListaDeAnimales().add(new Animal("pantera", "Penelope", 98.55, 4));
		la.getListaDeAnimales().add(new Animal("loro amazonico", "Juanito", 3.67, 2));
		la.getListaDeAnimales().add(new Animal("perro grandanés", "Artur", 37.77, 4));
		la.getListaDeAnimales().add(new Animal("mono de tanzania", "Monk", 55.32, 2));
		Iterator<Animal> ita;
		Animal tmp;
		ita = la.iterator();
		int elem = 0;
		int elemElimina = 0;
		System.out.println("Los animales en la lista son: ");
		while (ita.hasNext()) {
			tmp = ita.next();
			System.out.println(tmp.toString() + ", numero: " + ++elem);
		}
		System.out.print("¿Que número desea eliminar? ");
		elemElimina = entradaTeclado.nextInt();
		elem = 0;
		ita = la.retorna();
		while (ita.hasNext()) {
			tmp = ita.next();
			if (elem + 1 == elemElimina) {
				ita.remove();
				elemElimina = 0;
			} else {
				System.out.println(tmp.toString() + ", numero: " + ++elem);
			}
		}
		System.out.println();
	}
}