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”?
Voce deve implementar equals e hashcode usando a variavel nome.
Essa implementação é do eclipse padrão.
[code]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;
}
} [/code]
e na hora de tirar da lista deve criar um objeto de nome igual.
DadoAnalisar p=new DadoAnalisar ();
p.setPaciente("teste");
lista.remove(p);
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?
é eu tinha digitado errado ja arrumei la em cima.
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);
}
Da uma debugada se não conseguir posta o codigo.
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
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());
}
}
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
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.
procura colocar como resolvido o titulo do topico.
Nunca tinha feito nada disso em Forum, não sabia disso.
Não to achando onde que faz isso também.
Não sei se fiz certo, mas acho que foi