Enumeração vs Iterador
Existem muitas estruturas de dados que atuam como coleções em Java, como vetores, tabelas Hash e classes que implementam o Java Collections Framework (ou seja, HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap e LinkedHashSet). Existem várias maneiras de iterar por meio dos elementos individuais dos objetos em Java. Java fornece duas interfaces para tornar essa tarefa mais fácil. Enumeration e Iterator são duas das interfaces encontradas no pacote java.util que fornecem funcionalidade para enumerar por meio de sequências ou objetos com um conjunto de itens. O Enumerator foi introduzido no JDK 1.0 e o Iterator, que foi introduzido no JDK 1.2, virtualmente duplica a funcionalidade do Enumerator (dentro da Estrutura de Coleções).
O que é enumeração?
Enumeração é uma interface pública em Java, introduzida no JDK 1.0, que fornece a capacidade de enumerar por meio de sequências de elementos. Ele é encontrado no pacote java.util. Quando a interface Enumeration é implementada por um objeto, esse objeto pode gerar uma sequência de elementos. A interface de enumeração possui dois métodos. O método hasMoreElements () testará se esta enumeração contém mais elementos e o nextElement () retorna o próximo elemento na sequência (se houver pelo menos mais um para ir). Em outras palavras, chamando nextElement () sucessivamente, o programador pode acessar os elementos individuais na série. Por exemplo, para imprimir todos os elementos no Vector v1 usando Enumerator, o seguinte trecho de código pode ser usado.
Enumeração e = v1.elements ();
Enquanto (e.hasMoreLements ()) {
System.out.println (e.nextElement ());
}
Enumerator também pode ser usado para definir o fluxo de entrada para os objetos SequenceInputStream.
O que é Iterator?
Iterator é uma interface pública no pacote Java.util, que permite iterar por meio de elementos dos objetos de coleções que implementam a estrutura de coleções (como ArrayList, LinkedList, etc.). Isso foi introduzido no JDK 1.2 e substituiu o Enumerator no Java Collections Framework. Iterator tem três métodos. O método hasNext () testa se há elementos restantes na coleção e o método next () retorna o próximo elemento na série. O método remove () pode ser usado para remover o elemento atual da coleção subjacente. Por exemplo, para imprimir todos os elementos no Vector v1 usando o Iterator, o seguinte trecho de código pode ser usado.
Iterador i = v1.elementos ();
Enquanto (i.hasNext ()) {
System.out.println (e.next ());
}
Qual é a diferença entre Enumeration e Iterator?
Embora, Enumeration e Iterator sejam duas das interfaces encontradas no pacote java.util, que permitem iterar / enumerar por meio de elementos de uma série, eles têm suas diferenças. Na verdade, Iterator, que foi introduzido após Enumeration, substitui o Enumeration na estrutura de Coleções Java. Ao contrário da Enumeração, o Iterator é à prova de falhas. Isso significa que modificações simultâneas (na coleção subjacente) não são permitidas quando o Iterator é usado. Isso é muito útil em ambientes multithread, onde sempre há o risco de modificações simultâneas. No caso de uma modificação simultânea, o objeto Iterator lançará uma ConcurrentModificationException. Iterator tem nomes de métodos mais curtos em comparação com Enumerator. Além disso,iterator tem a funcionalidade adicional de excluir elementos durante a iteração (o que não é possível usando Enumerator). Portanto, se houver necessidade de remover elementos da coleção, Iterator é a única opção que pode ser considerada.