Use Iterator always for better programming. One big difference between Iterator and Enumeration is (apart from what Pallav has already mentioned), iterator is fail-safe. If you are using an iterator to go through a collection you can be sure of no concurrent modifications in the underlying collection which may happen in multi-threaded environments. Well, apart from being an advantage this also is said to decrease performance by a tad. However, that's negligible. (Some amount of processing is involved in checking for modifications). If you see the docs it says about "well defined semantics" for the iterator, the fail-safe property adds to that. Enumeration and Iterator are interfaces in java.util package. Enumeration is the old Interface(for legacy classes like Hashtable). Iterator is for the new classes like HashSet,HashMap.. Enumeration and Iterator are used to just count the no of elements and view it. But Iterator has an additional method for deleting elements...
About Java and it's related concepts..