Pesquisar por contato em agenda

Boa tarde, preciso implementar uma funcionalidade que pesquise contato numa agenda. Sou iniciante e tô com muitas dúvidas, pois o código já veio escrito e só preciso implementar isso mesmo.

Nesta classe é designado o método pesquisar:

	public Contato pesquisarPorNomeIgual(String chavePesquisa) {
		
		Contato contatoResultado = null;
		
		for (Iterator iterator = contatos.iterator(); iterator.hasNext();) {
			Contato contato = (Contato) iterator.next();
			
			// comparar se o contato da lista possui o nome parecido com chave pesquisa
			if(contato.getNome().compareTo(chavePesquisa) == 0)
				contatoResultado = contato;
				
		}
		
		return contatoResultado;
	}

Nesta outra eu preciso chamá-lo e fazer com que retorne na tela o usuário pesquisado (que é a que estou mexendo):

else if(opcao.compareTo("3") == 0) {
				
      System.out.println("Digite o nome do contato desejado:");
      String nomeTeclado = teclado.nextLine();
      agenda.pesquisarPorNomeIgual(nomeTeclado);//aqui, coloquei para o sistema receber por parâmetro o nome digitado, mas após isso, o que fazer? não devia retornar sozinho?
     
     
			}

Desde já, agradeço.

Assim o método de busca fica mais simples:

public Contato pesquisarPorNomeIgual(String chavePesquisa) {
    for (Contato contato : contatos) {
        // comparar se o contato da lista possui o nome parecido com chave pesquisa
        if (contato.getNome().equals(chavePesquisa)) {
            return contato;
        }
    }
    return null;
}

E pra pesquisar, você só esqueceu de atribuir o resultado da busca à uma variável:

System.out.println("Digite o nome do contato desejado:");
String nomeDigitado = teclado.nextLine();
Contato encontrado = agenda.pesquisarPorNomeIgual(nomeDigitado);
if (encontrado != null) {
    System.out.println("Nome:        " + encontrado.getNome());
    System.out.println("Idade:       " + encontrado.getIdade());
    System.out.println("Telefone:    " + encontrado.getTelefone());
    System.out.println("Outra coisa: " + encontrado.getOutraCoisa());
} else {
    System.out.println("Contato não encontrado: " + nomeDigitado);    
}

Perfeito, amigo, funcionou!

Mas, como falei, sou iniciante, e fiquei em dúvida em um aspecto

Por que se cria uma variável com o tipo de uma classe? ( Contato encontrado = ...)
Por que não é utilizado um tipo primitivo?

Valeu

Por que você cria classes?
Para a partir dessas classes criar objetos que representem alguma coisa, no seu caso um contato.

Você já estudou programação orientada à objetos?
Precisa estudar, senão não faz sentido programar com Java.

Java possui os seguintes tipos primitivos:

byte,  boolean (  8 bits )
short, char    ( 16 bits )
int,   float   ( 32 bits )
long,  double  ( 64 bits )

Algum deles tem condições de representar um contato e seus atributos?

2 curtidas

Obrigado pelos esclarecimentos!