Coleções - Iterator

Opa, tenho um problema estou criando uma lista de alunos para inserir vários alunos, só que quando compilo o código abaixo não é exibido nada na tela.

[code]import java.awt.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;

public class Aluno {
private String nome;
private int matricula;
ArrayList alunos = new ArrayList();

public Aluno(String nome, int matricula){
	this.nome = nome;
	this.matricula =matricula;

}
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public int getMatricula() {
	return matricula;
}
public void setMatricula(int matricula) {
	this.matricula = matricula;
	
}
public String toString(){
	return (""+nome+""+matricula+""+alunos);
}
public void inserir(Aluno a){
	Iterator<Aluno> i = alunos.iterator();
	while(i.hasNext()){
		alunos.add(a);
	
	}
	
}


public void exibir(){
	Iterator<Aluno> i = alunos.iterator();
	while(i.hasNext()){
		System.out.println(toString());
	}
	
}

}[/code]

[code]import java.util.Iterator;

public class MAin {
public static void main(String[] args) {
Aluno a1= new Aluno(“robson”,07);
Aluno a2= new Aluno(“Clara”,02);
a1.inserir(a1);
a2.inserir(a2);
a1.exibir();
a2.exibir();

}  

}

[/code]

O método inserir deveria ser assim:

public void inserir(Aluno a){ alunos.add(a); }

O iterator serve para percorrer uma lista. No seu caso, como a lista estava vazia na primeira chamada, o código nunca entraria naquele while. Não existe mesmo a necessidade de percorrer a lista para inserir um elemento dentro dela.

A linha 49 deveria ser:

System.out.println(i.next().toString());  

O comando next() retorna o próximo aluno do iterator. E o toString() deve ser chamado nesse aluno.

Olá Robson, tudo bem?

Dei uma olhada rápida no seu código e de cara já identifiquei um erro:

           System.out.println(toString()); 

O método toString() retorna uma String, no seu caso você já implementou o método na sua classe ALUNO.

Então basta fazer: System.out.println(i);
onde i representa um aluno :d

Outra coisa, não seria mais interessante você criar uma classe a parte para inserir e exibir os alunos não?

ops, realmente me esqueci desse detalhe…
ele está percorrendo uma lista

Faça como o ViniGodoy disse que vai da certo

Fiz o que viniGodoy falou, mas mesmo assim não da certo…

[code] public void inserir(Aluno a){
alunos.add(a);

	}
	



	public void exibir(){  
        Iterator<Aluno> i = alunos.iterator();  
        while(i.hasNext()){  
            System.out.println(i.next().toString());  
        }  
		
	}
	
}[/code]

o resultado é o seeguinte:

at java.lang.StringBuilder.append(Unknown Source)
at Aluno.toString(Aluno.java:33)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at java.util.AbstractCollection.toString(Unknown Source)