Preciso criar uma “inner classe” que implementa a Interface Iterator , ou seja implementar os seus métodos hasNext(); e Next() , remove() não é necessário. Este iterator servirá pa acessar um array, tem mesmo de ser feito desta forma. tou com alguns problemas …
Esta classe está dentro de outra … put é uma variável de instancia do tipo int e de acesso private , inicializada em 0… está correcto ?
[/code]
public class auxiliar implements Iterator {
public boolean hasNext(){
return buffer[put+1]!=null;
}
public Object next(){
return buffer[put];
}
public void remove() {
throw new UnsupportedOperationException("não é necessário implementar");
}
}
Mas se vc precisa mesmo criar seu iterator o seu codigo não funciona (aliás vc poderia descobrir isso correndo o codigo)
Vc não pode fazer put+1 sem mais porque put+1 pode sair fora do limite do array. Por outro lado vc deve incrementar a variável put, que não está fazendo. Eis uma forma mais simples (não precisa ser inner class)
public class ArrayIterator implements Iterator {
Object[] array
int current = 0;
public ArrayIterator (Object[] array){
this.array = array;
}
public boolean hasNext(){
// se length é 0 nem começa a iterar
return current <array.length;
}
public Object next(){
// primeiro aumenta o current com ++current, depois pega o valor na nova posição
return array[++current];
}
public void remove() {
throw new UnsupportedOperationException("Esta operação não é suportada.");
}
}
// Teste
String[] s = {"a", "b","c","d"};
for (Iterator it = new ArrayIterator (s); it.hasNext(); ){
System.out.println((String)it.next());
}