Iterator

6 respostas
R
Olá galera, estou com uma dúvida com relação ao iterator
public void encontrarFuncionario(Funcionario f){
				Iterator<Funcionario> ifu = aFuncionarios.iterator();
				while(ifu.hasNext()){
					if(f.equals(ifu)){
						System.out.println("Achou");
						}}
		}
consigo adicionar na lista só que quando quero buscar um funcionario não retorna nada.
public class Empresa {

	private String nome;
	
	List<Funcionario> aFuncionarios =  new ArrayList<Funcionario>();
	
	 public void adiciona(Funcionario f){
		
			 aFuncionarios.add(f);
			
		 }
public static void main(String[] args) {
	Empresa e = new Empresa();
	
	e.adiciona(new Funcionario("Robson","Duarte"));
	e.adiciona(new Funcionario("Calra", "NOgeira"));
	e.adiciona(new Funcionario("MAria","Consolação"));
	e.exibir();
	e.encontrarFuncionario(new Funcionario("Robson","Duarte"));

por exemplo qunado eu chamo o e.encontrar e passo o funcionario e as strings, nao consigo encontrara nada ...
alguém pode ajudar
valeu abraços

6 Respostas

Filipe_Chagas

Você implementou o método equals na classe Funcionario?

R
opa Filipe, implementei assim
public class Funcionario implements Comparable<Funcionario>{
	private String nome;
	private String sobrenome;
	
	public Funcionario(){
		this(null,null);
	}
	public Funcionario(String nome,String sobrenome){
		super();
		this.nome = nome;
		this.sobrenome = sobrenome;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getSobrenome() {
		return sobrenome;
	}
	public void setSobrenome(String sobrenome) {
		this.sobrenome = sobrenome;
	}
	public String toString(){
		return(""+nome+""+sobrenome);
	}
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (!(obj instanceof Funcionario))
			return false;
		Funcionario other = (Funcionario) obj;
		
		if (nome == null&&sobrenome==null) {
			if (other.nome != null&&other.sobrenome!=null)
				return false;
		} else if (!nome.equals(other.nome)&&!sobrenome.equals(other.sobrenome))
			return false;

		return true;
	}
	@Override
	public int compareTo(Funcionario obj) {
		
			if(obj instanceof Funcionario){
				Funcionario a = (Funcionario) obj;
		
				if(nome==a.nome&&sobrenome==a.sobrenome)
				
			return 0;
			}
			return 0;
		
		
	}
}
danieldomingues86

Olá,

Use:if (f.equals(ifu.next()))

Abraços
Daniel.

R
ah consegui:)
public void encontrarFuncionario(Funcionario f){
			
			
			Iterator<Funcionario> ifu = aFuncionarios.iterator();
				while(ifu.hasNext()){
					Funcionario funcionarioDaVez = ifu.next();
					if(f.getNome().equals(funcionarioDaVez.getNome())&&f.getSobrenome().equals(funcionarioDaVez.getSobrenome())){
					
							System.out.println("Achou: "+f);
							}
					
					}}
S

Amigo, tudo bem que conseguiu. Mas esta meio fora do padráo. Faça como danieldomingues86 falou.

E outro coisa: que implementação é essa do compareTo?

Você já recebeu um tipo funcionario e ainda testou, e depois fez um cast?

Qual era o seu objetivo?

Abraço

Kanin_Dragon

Jovem,

Parabéns pela resolução do problema, agora coloque um [Resolvido] no título do tópico Ok.

Abs,

Criado 5 de junho de 2011
Ultima resposta 6 de jun. de 2011
Respostas 6
Participantes 5