Olá caros colegas desenvolvedores, a conversa de hoje é: percorrendo e removendo um item de uma lista. Já aprendemos como criar e percorrer uma lista. Nós já aprendemos a remover um item da lista, fizemos isso com as disciplinas. Mas no tutorial de hoje faremos isso de forma diferente.
Então imagina o cenário de uma turma de 40 ou mais alunos, e por algum motivo precisamos buscar um aluno específico. E não apenas isso, quando encontrarmos o tal aluno vamos querer imprimir alguma informação sobre ele. Dentro do contexto do nosso exemplo, queremos essencialmente imprimir a média das notas desse aluno.
Reconheço que este é um cenário bem restrito. Uma lista de 40 alunos pode facilmente ser percorrida manualmente. Mas a questão aqui é, o mesmo conceito e “técnica” aplicados para percorrer uma lista de 40 alunos, poderá ser aplicado a uma lista de 400 ou 4000 alunos. Vamos nessa?
BUSCANDO UM ITEM DA LISTA
E para que seja possível percorrer tal lista, o que precisamos fazer é implementar uma única condição. Dentro do foreach na classe principal implemente a seguinte instrução de seleção.
Como sempre fazemos, de início começamos da forma mais simples, e de modo gradativo, subimos o nível de complexidade do nosso código. Dessa forma, definiremos previamente o aluno que desejamos buscar na lista.
Recorremos ao método equalsIgnoreCase() que compara duas Strings sem fazer distinção entre letras maiúsculas e minúsculas. Observe que em nosso código inserimos “Caio, e na busca informamos “CAIO”.
Como estamos procurando por um elemento específico da lista, ao encontra-lo poderemos interromper o processamento e exibir os dados da busca. E neste caso, apenas os dados do aluno encontrado, serão exibidos.
REMOVENDO UM ITEM DA LISTA
Agora que já sabemos como inserir mais de um item na lista, pesquisar um item, que tal aprender a remover? É o que iremos fazer agora.
Acompanhe a lógica. Se vamos remover o item da lista, no caso o aluno Caio e suas respectivas informações, não há porque processarmos o cálculo da média para o Caio.
Então, observe o que iremos fazer. Quando encontrarmos o item ou o no caso, o aluno que queremos remover, será removido da lista o próprio objeto que está sendo passado. No instante em que o item for removido, a execução será interrompida por meio da instrução break.
E claro, vamos mover o trecho de código do cálculo da média para dentro de um else. Isto é, mesmo tendo removido o aluno Caio, ainda desejamos imprimir a média para os outros. Dessa forma, nosso código agora está assim, como mostra a imagem abaixo:
Dessa vez, o aluno Caio foi o segundo elemento que inserimos na lista. O primeiro foi o aluno Alex.
Assim, após o processamento os únicos dados a serem exibidos na tele devem obrigatoriamente ser do aluno Alex e somente dele.
APRIMORANDO O CÓDIGO
E poderemos então imprimir além da média das notas as disciplinas correspondentes. E para isso teremos que implementar dois foreach’s. O que queremos com estas simples implementações é exercitar a sua lógica de programação.
Percorrendo todo o código, o que fizemos primeiro foi identificar o item/aluno a ser removido, e o remover. Na sequência processamos as notas para os demais alunos. Enfim escrevemos o nome do(s) aluno(s) que permaneceram na lista bem como as disciplinas.
Importante: as disciplinas estão dentro do objeto aluno, daí a necessidade de um outro laço de repetição para percorrer a lista de disciplinas.
EM POUCAS PALAVRAS
Hoje aprendemos a fazer uma busca na lista e a remover o item buscado, no caso, o próprio objeto da busca. E finalizamos imprimindo junto com as demais informações do aluno, o nome das disciplinas.
Que tal você enfrentar o desafio de imprimir também, junto com as disciplinas, as respectivas notas? Como sempre falo, não existe outra forma de aprender um jogo que não seja jogando.