import java.util.*;

class RemoveDoubles {
       
        public static void main(String[] args) {
                List<String> animals = new ArrayList<String>();
                animals.add("Horse");
                animals.add("Crocodile");
                animals.add("Cat");
                animals.add("Hamster");
                animals.add("Cat");
                animals.add("Cat");
                animals.add("Crocodile");
                animals.add("Mouse");
                animals.add("Elk");
                System.out.println(animals);
                removeDoubles(animals);
                System.out.println(animals);
        }
       
        public static <E, T extends List<E>> T removeDoubles(T list) {
                Iterator<E> it = list.iterator();
                Set<E> s = new HashSet<E>();
                while (it.hasNext()) {
                        E elem = it.next();
                        if (!s.add(elem)) {
                                it.remove();
                        }
                }
                return list;
        }
}