olá pessoal, eu tenho um probleminha, tenho que fazer um cadastro de várias obras e guardálas em um ArrayList de objetos. Até ai blz sem problemas, mas eu não posso cadastrar obras que tenham o mesmo nome ou o mesmo código. Para isso precisarei sobrescrever o método equals e por consequencia o hashCode, alguem pode me ajudar neste ponto?
Não sei como sobrescrever esses caras. Segue o codigo de minha superclasse abaixo:
import java.util.ArrayList;
abstract class Obra implements Custos, Comparable {
private String nome;
private String endereco;
private int codigo;
//abstract Obra obraMaisCara();
public Obra(String nome) {
setNome(nome);
}
//Função para comparar o custo da obra, e tbm para usarmos o sort de collections
public int compareTo(Obra o) {
Obra obras = (Obra) o;
if (getCustoTotal() == obras.getCustoTotal()) {
return getNome().compareToIgnoreCase(obras.getNome());
} else if (getCustoTotal() < obras.getCustoTotal())
return 1;
return -1;
}
@Override
public String toString() {
return "O nome e: " + getNome()+"\n";
}
@
@Override
public boolean equals(Object obj) {
Obra tmp = (Obra) obj;
if(tmp.getCodigo() == getCodigo() || tmp.getNome() == getNome()){
return true;}
return false;
}
// Classe para retornar as obas acima de: R$ 500.000,00
public static ArrayList<Obra> obrasAcimaQuinhentos(ArrayList<Obra> obras){
ArrayList<Obra> obraAcimaQuinhentos = new ArrayList<Obra>(); // Instancia um novo Array contendo as obras acima de 500.000,00
System.out.println("As obras acima de R$: 500.000,00 sao: \n");
for (int i = 0; i < obras.size(); i++) {
if (obras.get(i).getCustoTotal() > 500.000) {
obraAcimaQuinhentos.add(obras.get(i));
}
}
return obraAcimaQuinhentos;
}
// Classe para retornar a oba mais cara
public static Obra obrasMaisCara(ArrayList<Obra> obras){
double maisCaro = 0.0;
int position=0;
for (int i = 0; i < obras.size(); i++) {
if(obras.get(i).getCustoTotal() > maisCaro){
maisCaro = obras.get(i).getCustoTotal();
position = i;
}
}
return obras.get(position); // Retorna o objeto que contém a obra mais cara, assim posso trabalhar com seus dados como quiser.
//return position; // Retorna a posição do objeto que contém a obra mais cara, assim posso maninupul-lo como quiser.
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
}