Interface do iterador
1. Interface do iterador
Iterável
Método embutido iterator () retorna um iterador recém-criado.
como:
interface pública iterable {iterator iterator (); } O Iterator possui dois métodos: hasNext () e Next () para implementar. interface pública iterator {boolean hasNext (); Item a seguir (); void remover (); // implementação opcional}
2. Implementar importação
importar java.util.iterator;
Classes genéricas, implementar a interface iterável implementa Iterable <tem>
Implementa o método ITERABER IMERATER (), retornando qualquer tipo de iterador definido.
Defina o tipo de iterador implementa o iterador <tem>
Implementar hasNext (), Next () e remover ()
3. Exemplo:
public class Stack <tem> implementa iterable <tem> {public iterator <tem> iterator () {return new listiterator <tem> (primeiro); } classe privada listiterator <tem> implementa o iterador <tem> {nó privado <tem> atual; public listiterator (nó <tem> primeiro) {current = primeiro; } public boolean hasNext () {return atual! = null; } public void REMOT () {THROW NEW UNSUPPORTEDOPERATIONECCECCECTION (); } item público next () {if (! hasNext ()) lançar novo nosuchElementException (); Item item = current.item; current = current.next; item de retorno; }}} 4. Métodos de chamada
foreach iteração
para (String S: Stack) System.out.println (S);
Se for um tipo básico, como int/duplo, use o relacionamento de conversão anterior
5. Travessal de loop
Iterator i = pilha.iterator (); while (i.hasnext ()) {string s = i.next (); }Interface de enumeração
Enumeração é uma classe de interface em java.util. Na enumeração, ele encapsula métodos sobre a enumeração de conjuntos de dados. É semelhante ao iterador. É usado para atravessar elementos na coleção. No entanto, a enumeração de enumeração fornece apenas a função de atravessar elementos do vetor e coleções de tipos de hashtable. Esse tipo de objeto de coleção obtém um objeto de enumeração chamando o método Elements () e chama o seguinte método para atravessar elementos na coleção.
hasMoreElements (): determina se ainda existem dados no objeto de enumeração
NextElement (): Obtenha os próximos dados no objeto de enumeração
Exemplos são os seguintes:
Enumeração req = request.getParameterNames (); while (req.hasMoreElements ()) {objeto obj = (objeto) req.nextElement (); if (obj.toString (). TRIM (). Equals ("LastPage")) {System.out.println ("LastPage /n"); } else if (obj.toString (). TRIM (). Equals ("NextPage")) {System.out.println ("NextPage"); }} A diferença entre iterador e enumeração
Nas coleções Java, geralmente atravessamos a coleção através de "Iterator" ou "Classe de Enumeração". Hoje, vamos aprender sobre as diferenças entre eles juntos.
Vamos primeiro olhar para os códigos de origem de enumeração.java e iterator.java e depois falar sobre suas diferenças.
A enumeração é uma interface, e seu código -fonte é o seguinte:
pacote java.util; enumeração de interface pública <E> {boolean hasMoreElements (); E NextElement ();} O iterador também é uma interface, e seu código -fonte é o seguinte:
pacote java.util; interface pública ITERATOR <E> {boolean hasNext (); E próximo (); void remove ();} Depois de ler o código, vamos falar sobre a diferença entre eles.
(01) diferentes interfaces de função
A enumeração possui apenas 2 interfaces de função. Através da enumeração, só podemos ler os dados da coleção, mas não podemos modificar os dados.
O iterador possui apenas 3 interfaces de função. Além de ler os dados da coleção, o iterador também pode excluir os dados.
(02) O iterador suporta o mecanismo de falha, mas a enumeração não.
A enumeração é uma interface adicionada pelo JDK 1.0. As funções utilizadas incluem vetor, hashtable e outras classes, todas adicionadas no JDK 1.0. O objetivo da enumeração é fornecer a eles uma interface de travessia. A própria enumeração não suporta a sincronização, mas quando o vetor e a enumeração de implementação de vetores e hashtable, a sincronização é adicionada.
O iterador é uma interface adicionada apenas no JDK 1.2. Ele também fornece interfaces atravessadas para coleções como Hashmap e ArrayList. O iterador suporta o mecanismo de falha: quando vários threads operam no conteúdo da mesma coleção, um evento de falha pode ser gerado.