Iterator para Array de Obj

oi malta. To com um problema:

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");
	}
}

Para iterar um array qualquer de qualquer coisa

Iterator it = Arrays.asList(array).iterator();

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());
}

Deixo para si a conversão para generics

posta a classe que se usa o PUt tb…assim é mais facil