[list]Estou fazendo um trabalho pra faculdade que precisa usar Map
e não consigo fazer a remoção do cadastro de um cliente. Alguém
pode me ajudar? Cliente é a chave e telefone o valor.[/list]
publicclassCentral{privateMapcolecao=newHashMap();// Método para cadastrar um Cliente e seu telefonepublicvoidcadastra(Clientecliente,TelResidencialtelefone){colecao.put(cliente,telefone);}// Método para remover o cadastro de um clientepublicObjectremove(Objectkey){returncolecao.remove(key);
Para que um Map que é um conjunto funcione, você precisa implementar
os métodos equals e hashCode da classe que você construiu.
Fernanda_Morais
[list]Ok, eu já fiz isso...[/list]
publicclassClienteimplementsComparable{privateStringnome;privateStringsexo;publicCliente(Stringnome,Stringsexo){this.nome=nome;this.sexo=sexo;}publicStringtoString(){return"Cliente: "+nome+"\nSexo: "+sexo;}publicinthashCode(){returnnome.hashCode();}publicbooleanequals(Objectobj){if(obj==null)returnfalse;if(!(objinstanceofCliente))returnfalse;//Comparando o nome dos clientesClientetemp=(Cliente)obj;returnthis.nome.equalsIgnoreCase(temp.nome);}publicStringgetNome(){returnnome;}publicStringgetSexo(){returnsexo;}publicintcompareTo(Objectobj){Clientetemp=(Cliente)obj;returnthis.nome.compareToIgnoreCase(temp.nome);}}
Na prática não gosto muito de usar HashMap; prefiro usar TreeMap porque eu preciso normalmente definir um método (compareTo) de uma classe que implementa Comparator, em vez de definir hashCode e equals.
Vou dar um exemplo, em que dois clientes são iguais se seus códigos forem iguais, e onde os clientes são ordenados, por padrão, pelo seu código numérico.
classCliente{privateintcodigo;publicintgetCodigo()....publicvoidsetCodigo(intcodigo)....}publicclassCentral{privateMap<Cliente,Telefone>colecao=newTreeMap<Cliente,Telefone>(newComparator<Cliente>(){publicintcompare(Clientecli1,Clientecli2){returncli1.getCodigo()-cli2.getCodigo();}});// Método para cadastrar um Cliente e seu telefonepublicvoidcadastra(Clientecliente,TelResidencialtelefone){colecao.put(cliente,telefone);}// Método para remover o cadastro de um clientepublicObjectremove(Objectkey){returncolecao.remove(key);...
Fernanda_Morais
[list]No caso do meu trabalho o cliente é inserido por nome e não código,
e se eu usar o HashMap mesmo, como posso remover um cliente da lista?[/list]
T
thingol
Hum, se você tiver 2 clientes chamados “João da Silva”, então …
De qualquer maneira, supondo que você não atenda a nenhum João da Silva, ou você mate todos os Joões da Silva exceto um, você pode definir equals e hashCode como: