Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Remover item por nome do Aluno

Pessoal tenho uma lista com os alunos inseridos e gostaria de remover um determinado Aluno (pelo nome). Gostaria de saber como faço pra passar a referencia dele?

public class TestaCursoComAluno {

    public static void main(String[] args) {

        Curso javaColecoes = new Curso("Dominando as coleções do Java",
                "Paulo Silveira");

        javaColecoes.adiciona(new Aula("Trabalhando com ArrayList", 21));
        javaColecoes.adiciona(new Aula("Criando uma Aula", 20));
        javaColecoes.adiciona(new Aula("Modelando com coleções", 24));

        Aluno a1 = new Aluno("Rodrigo Turini", 34672);
        Aluno a2 = new Aluno("Guilherme Silveira", 5617);
        Aluno a3 = new Aluno("Mauricio Aniche", 17645);

    javaColecoes.matricula(a1);
    javaColecoes.matricula(a2);
    javaColecoes.matricula(a3) ;
}

No caso eu gostaria de saber como faço pra passar o nome do Guilherme Silveira e apagar todo item no array.

5 respostas

Oi Julio, tudo certo?

Se entendi bem sua pergunta, talvez o método removeAll() te atenda.

https://docs.oracle.com/javase/8/docs/api/java/util/Set.html#removeAll-java.util.Collection-

Dá uma olhada e fala se é isso mesmo?

Abraço!

Julio, perdão. Vou tentar novamente. Percebi que nao faz muito sentido remover todos os alunos com o nome "Guilherme Silveira" como eu tinha entendido porque o Set não permite repetições.

Como o nosso equals() foi implementado para comparar o nome, se agora entendo poderíamos fazer o seguinte:

Na classe Cursos, criar o seguinte método:

public void remove(String nome) {
        Aluno alunoARemover = new Aluno(nome, 0);
        alunos.remove(alunoARemover);
    }

e no método main fazer a chamada:

javaColecoes.remove("Guilherme Silveira");

Era isso? Abraços!

Nao =/ Tipo quem fara a insercao dos dados sera feita pelo usuario

Ex: Classe Main

package br.com.alura.testaMain;

import java.util.Scanner;

import br.com.alura.classe.Aluno;
import br.com.alura.classe.Aula;
import br.com.alura.classe.Curso;

public class TestaCursoComAlunos {
    public static void main(String[] args) {
        Scanner leitor = new Scanner(System.in);
        Curso javaColecoes = new Curso("Dominando as coleções do Java", "Paulo Silveira");

        javaColecoes.adiciona(new Aula("Trabalhando com ArrayList", 21));
        javaColecoes.adiciona(new Aula("Criando uma Aula", 20));
        javaColecoes.adiciona(new Aula("Modelando com coleções", 24));

        System.out.println("Informe o Nome do Aluno");
        String nome = leitor.next();
        System.out.println("Informe o Nome do Aluno");
        int numeroMatricula = leitor.nextInt();

        javaColecoes.matricula(new Aluno(nome, numeroMatricula));

        System.out.println("Todos os alunos Matriculados: ");
        javaColecoes.getAlunos().forEach(aluno -> {
            System.out.println(aluno);
        });

    System.out.println("Informe o Aluno a ser removido");
    nome = leitor.next();

    // Estou com duvida para fazer a remoção do aluno nesta funcao.
// Removendo ele por completo.
// Tipo nao sei como faço pra passar o aluno completo neste caso. 
    → javaColecoes.removerAluno(Aluno);
// Ou se é necessario passar somente o nome
→ javaColecoes.removerAluno(NomeAluno)


    }
}

Nao sei como fazer a funcao para isto. Ficou mais claro ? (Desculpa, as vezes nao sou bom em explicar algo =/ ).

Oi Julio,

vamos tentar sanar sua dúvida! ;)

Nesse caso, se entendi você pode fazer o seguinte no main:

System.out.println("Informe o Aluno a ser removido");
String nome = leitor.next();

Aluno alunoASerRemovido = new Aluno(nome);
javaColecoes.removerAluno(alunoASerRemovido);

Na classe Aluno é legal criar um construtor para recebermos apenas o nome:

public Aluno(String nome) {
    this.nome = nome
}

Por fim, na classe Curso:

public void remove(Aluno aluno) {
    alunos.remove(aluno);
}

E agora, o que me diz?

abraço

solução!

Lucas, bom dia tudo bem ?

Desculpe nao responder antes, estive um pouco ocupado esses dias =/.

Sim consegui resolver meu problema, mas acredito que de uma outra forma :).

Segue abaixo o procedimento realizado para criar o metodo de remover.

public void removerAluno(String nomeAluno) {
        for (int i = 0; i < alunos.size(); i++) {
            Aluno aluno = alunos.get(i);
            if (aluno.getNome().equalsIgnoreCase(nomeAluno)) {
                alunos.remove(aluno);
                System.out.println("Aluno Removido Com Sucesso");
                return;
            }
        }
        System.out.println("Nao encontrado");

    }

Para esclarecer o que precisava. Tinha uma classe chamado aluno (onde fica os atributos e get e toString) Outra classe GerenciaAluno (Onde fica os metodos adiciona, remover entre outros) E a classe main que chama tudo :)

O que tu postou me ajudou muito. Vlw