1
resposta

Há uma forma mais otimizada de fazer uma busca sem ser via objeto a1 como criado na aula?

// Criação de objetos mais direta

    javaColecoes.matricula(new Aluno("Rodrigo Turini", 34672));

    javaColecoes.matricula(new Aluno("Guilherme Silveira", 56177));

    javaColecoes.matricula(new Aluno("Mauricio Aniche", 17645));

// Feita em aula

    Aluno a1 = new Aluno("Rodrigo Turini", 34672);

    Aluno a2 = new Aluno("Guilherme Silveira", 56177);

    Aluno a3 = new Aluno("Mauricio Aniche", 17645);

// Porém procurar via a1 me parece muito estranho, pois apenas eu que escrevi o código saberia qual é a referencia do Rodrigo, e pensando que o meu Set contem muitos alunos, uma pessoa de fora, ao querer pesquisar, não vai conseguir ter êxito, porque a mesma não sabe que Rodrigo é referente a a1. Sendo assim qual possibilidade seria mais otimizada?

1 resposta

Quando você tem uma variável de um objeto em Java, você não guarda os valores dela, e sim a referência para onde ela está armazenada.

Ou seja, se você tiver, por exemplo:

Aluno a1 = new Aluno("Rodrigo");
Aluno a2 = a1;

Na prática, tanto a1 quanto a2 "apontam" para o mesmo aluno, que tem nome de Rodrigo. O mesmo acontece com os dois exemplos que você mostrou acima, se você criar uma matrícula com .setMatricula ou com a1, você vai ter a referência do mesmo aluno igualmente.

Para você ter um cenário que poderia causar um problema, você teria que criar dois alunos diferentes, utilizando a palavra new, essa sim cria um novo objeto.

Do jeito que você mostrou, se você utilizar .getMatricula() (caso exista esse método), ele vai retonar o mesmo aluno em ambas abordagens.