Diferença entre Iterador e Interface de Enumeração em Java
Contente
Os três cursores usados para acessar os elementos de qualquer coleção, um por um, são Enumeração, Iterador e ListIterator. No entanto, Iterator e Enumerator são destinados a executar o mesmo trabalho. Ainda assim, eles são distintos um do outro, no sentido de que a Enumeração tem acesso somente leitura aos elementos da coleção. Por outro lado, o Iterator pode ler e remover os elementos da coleção. A diferença importante entre o iterador e a enumeração é que o Enumeração não pode ser aplicado nas classes de coleção, é aplicável apenas nas classes herdadas. Por outro lado, o Iterador é aplicável às classes de coleção, portanto, é referido como um cursor universal. Vamos aprender mais algumas diferenças entre Iterador e Enumeração com a ajuda do gráfico de comparação mostrado abaixo.
- Gráfico de comparação
- Definição
- Principais diferenças
- Conclusão
Gráfico de comparação
Base para Comparação | Iterador | Enumeração |
---|---|---|
Basic | O iterador é um cursor universal, pois é aplicável a todas as classes de coleção. | A enumeração não é um cursor universal, pois se aplica apenas a classes herdadas. |
Acesso | Usando o Iterator, você pode ler e remover os elementos da coleção. | Usando Enumeração, você pode ler apenas os elementos da coleção. |
Métodos | hasnext público booleano (); objetos públicos next (); remoção de vazio público (); | público booleano hasMoreElements (); objeto público nextElement (); |
Limitação | O iterador é um cursor de acesso direto unidirecional. O iterador não pode substituir nenhum elemento da coleção. O Iterator não pode adicionar nenhum novo elemento na coleção. | A enumeração é um cursor de acesso direto unidirecional. A enumeração suporta apenas classes herdadas. A enumeração possui apenas acesso somente leitura aos elementos em uma coleção. |
Superar | Para superar as limitações do Iterator, você deve optar pelo ListIterator. | Para superar as limitações da Enumeração, você deve optar pelo Iterator. |
Definição da Interface Iteradora
Iterador é uma interface na estrutura de coleção. Como o Iterator é aplicável a todas as classes de coleção, é referido como um cursor universal. É o cursor usado para acessar os elementos da coleção, um por um. Usando o Iterator, você pode recuperar os elementos da coleção e, se desejar, também pode remover os elementos da coleção. O objeto do Iterator pode ser criado como indicado abaixo.
Iterador itr = Collc.iterator ();
A variável itr é um objeto do iterador. Collc é qualquer objeto de coleção que deve ser repetido ou repetido usando o objeto (itr) do Iterator. o iterador () é o método usado para criar um objeto iterador. Existem três métodos no iterador, como mostrado abaixo.
hasnext público booleano (); Public object next (); remoção de vazio público ();
O primeiro método hasnext () verifica se a coleção possui algum elemento ou não. Se a coleção tiver os elementos, ela retornará true, caso contrário, retornará false. O segundo método Próximo() é usado para recuperar o próximo elemento na coleção. O terceiro método remover() é usado para excluir os elementos da coleção.
O Iterator pode viajar em uma coleção apenas na direção para frente e não pode voltar atrás enquanto viaja. O Iterator pode remover o elemento da coleção, mas não tem a capacidade de substituir qualquer elemento existente por um novo elemento, nem pode adicionar nenhum novo elemento na coleção. Para superar essas limitações, você pode ir para a interface ListIterator.
Definição da interface de enumeração
Enumeração é a interface aplicável ao legado classes e não pode ser aplicado a nenhuma classe de coleção. Portanto, não é um cursor universal. A enumeração recupera o elemento (objeto) da coleção, um por um. O objeto de enumeração possui acesso somente leitura aos elementos da coleção. O objeto de enumeração não pode alterar nenhum elemento da coleção. Vamos ver como criar objeto de enumeração, dê uma olhada.
Enumeração er = Vect.elements ();
A variável er é um objeto de enumeração. o Vect é o objeto da classe vetorial que deve ser percorrido pelo objeto (er) da enumeração. O método elemento() é usado para criar um objeto de enumeração. Existem apenas dois métodos na interface de enumeração, como mostrado abaixo.
público booleano hasMoreElements (); public nextElement ();
O primeiro método hasMoreElements () é usado para verificar o status da coleção se ela possui os elementos ou está vazia. Se a coleção tiver os elementos, o método hasMoreElements () retornará true, caso contrário, retornará false. O segundo método nextElement () é usado para recuperar os elementos da coleção, um por um. Quando a travessia é concluída, o método nextElement () lança NoSuchElementException. O objeto de enumeração viaja apenas na direção direta. Não pode adicionar, remover ou substituir nenhum elemento da coleção. Para superar essas limitações da enumeração, você deve optar pelo Iterator.
- A principal diferença entre Iterator e Enumeração é que o Iterator é um cursor universal, pode ser usado para iterar qualquer objeto de coleção. Por outro lado, a Enumeração é usada apenas para atravessar objetos da classe herdada.
- O objeto de enumeração possui apenas acesso somente leitura aos elementos da coleção. No entanto, o objeto do Iterator pode ler e remover os elementos da coleção.
- Existem dois métodos do iterador, um para verificar o status da coleção e outro para recuperar os elementos da coleção. Além dos métodos de enumeração, o Iterator possui mais um método para remover os elementos da coleção.
- Limitações da enumeração: é o cursor unidirecional para a frente, possui acesso somente leitura e pode ser aplicado às classes de coleção. Por outro lado, o Iterator não pode substituir ou adicionar nenhum novo elemento na coleção e, como Enumeração, também é um cursor unidirecional para a frente.
- A limitação da enumeração é resolvida pelo Iterator e as limitações do Iterator são resolvidas pelo ListIterator.
Conclusão:
Atualmente, o cursor Iterator e o ListItertaor são usados, pois são o cursor universal e são muito eficientes que a Enumeração.