Excluir objeto do ArrayList com uma variavel [RESOLVIDO]

15 respostas
X

Alguém poderia me ajudar na hora de excluir um objeto mas só tenho uma variavel desse objeto.

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // Excluir a linha selecionada, também remover da estrutura
        DadoAnalisar d = new DadoAnalisar();
        //Pegar o nome do paciente
        String nome = JOptionPane.showInputDialog ("Insira o nome do paciente que deseja remover");
        //removendo o paciente da lista
        lista.remove (d.nome);
}

a classe DadoAnalisar é a seguinte

public class DadoAnalisar {
    private String paciente;
    private float area;

    public void setArea(float area) {
        this.area = area;
    }

    public void setPaciente(String paciente) {
        this.paciente = paciente;
    }

    public float getArea() {
        return area;
    }

    public String getPaciente() {
        return paciente;
    }


}

Como eu poderia excluir esse objeto do ArrayList com apenas essa variável “nome”?

15 Respostas

Diabo_Loiro

Voce deve implementar equals e hashcode usando a variavel nome.
Essa implementação é do eclipse padrão.

public class DadoAnalisar {  
     private String paciente;  
     private float area;  
   
    public void setArea(float area) {  
         this.area = area;  
     }  
   
     public void setPaciente(String paciente) {  
         this.paciente = paciente;       }  
  
     public float getArea() {  
        return area;  
    }  
   
    public String getPaciente() {  
        return paciente;  
     }

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((paciente == null) ? 0 : paciente.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		DadoAnalisar other = (DadoAnalisar) obj;
		if (paciente == null) {
			if (other.paciente != null)
				return false;
		} else if (!paciente.equals(other.paciente))
			return false;
		return true;
	}

 }

e na hora de tirar da lista deve criar um objeto de nome igual.

DadoAnalisar p=new DadoAnalisar ();
p.setPaciente("teste");
lista.remove(p);
X

tentei colocar esse codigo de exclusão e deu erro.
1º na hora da classe Paciente. Mas mudei pra DadoAnalisar
2º não ta excluindo.

O que poderá ser isso?

Diabo_Loiro

é eu tinha digitado errado ja arrumei la em cima.

X

mas mesmo assim ainda não esta excluindo o cara do ArrayList
o codigo que deixei ta assim:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        // Excluir a linha selecionada, também remover da estrutura
        DadoAnalisar d = new DadoAnalisar();
        //Pegar o nome do paciente
        String nome = JOptionPane.showInputDialog ("Insira o nome do paciente que deseja remover");
        //removendo o paciente da lista
       // lista.remove (d.nome);
        //Paciente p=new Paciente();
        d.setPaciente(nome);
        lista.remove(d);
    }
Diabo_Loiro

Da uma debugada se não conseguir posta o codigo.

X

Desculpa a ignorancia ai, mas continua sem excluir.
Mas se não está usando hashcode e o equals, porque implementar?

Não entendi a implementação desses metodos

Diabo_Loiro

vou fazer um exemplo.

Diabo_Loiro

Pronto tem um exemplo feito em 5 minutos e muito mal orientado a objetos pois estou trabalhando.

Explicação voce tem que implementar equals usando a propriedade paciente, para o arrayList saber que 2 “DadoAnalisar” são iguais quando o paciente for igual.
ai é so remover…

import java.util.ArrayList;

public class Teste {

	public static void main(String[] args) {
		
		ArrayList<DadoAnalisar> lista=new ArrayList<DadoAnalisar>();
		lista.add(new DadoAnalisar("teste1"));
		lista.add(new DadoAnalisar("teste2"));
		lista.add(new DadoAnalisar("teste3"));
		
		for(DadoAnalisar dado:lista){
			System.out.println(dado.getPaciente());			
		}
		
		DadoAnalisar dadoExcluir=new DadoAnalisar("teste1");	
		lista.remove(dadoExcluir);
		
		System.out.println("---------------------------------------");
		for(DadoAnalisar dado:lista){
			System.out.println(dado.getPaciente());			
		}
	}

}
public class DadoAnalisar {

	private String paciente;
	private float area;

	public String getPaciente() {
		return paciente;
	}

	public void setPaciente(String paciente) {
		this.paciente = paciente;
	}

	public float getArea() {
		return area;
	}

	public void setArea(float area) {
		this.area = area;
	}
	public DadoAnalisar(String paciente) {
		super();
		this.paciente = paciente;
	}

	public boolean equals(Object obj) {	
		DadoAnalisar outro = (DadoAnalisar) obj;
       return this.getPaciente().equals(outro.getPaciente());
	}

}
X

Ai, brigadão pela força, mas não sei se é doideira minha, mas não está indo.
To desistindo disso por hj.
Vlw pela ajuda, até entendi o jeito e deve ser o certo, com certeza, mas devo está fazendo alguma merda.

Até mais

Diabo_Loiro

cara não tem como não rodar… acabei de testar.

cria um novo projeto java.

e adiciona as 2 classes que coloquei no outro post.

e roda a classe Teste que tem o metodo main.

para voce poder entender.

X

Foi, funcionou.

Vlw cara

Diabo_Loiro

procura colocar como resolvido o titulo do topico.

X

Nunca tinha feito nada disso em Forum, não sabia disso.
Não to achando onde que faz isso também.

X

Não sei se fiz certo, mas acho que foi

Diabo_Loiro

é assim mesmo.

Criado 14 de dezembro de 2010
Ultima resposta 15 de dez. de 2010
Respostas 15
Participantes 2