Por favor, me ajudem aqui a escolher qual a melhor estrutura de dados Java para resolver o seguinte problema:
Obtenho uma lista de conceitos (Strings) e cada um desses conceitos possui um conceito equivalente associado.
Preciso manter uma lista desses conceitos e seu respectivo equivalente.
A principio, implementei utilizando Hashmap, onde o conceito era a chave e o equivalente era o valor.
Porém, na recuperação das informações encontrei um problema e descobri que nesse caso não era bom utilizar hashmap.
Agora estou implementando com ArrayList. Mas como representar que um elemento do array tem outro associado, de uma forma que não seja extremamente complicada? :?
creio que o melhor seria usar mesmo um hashMap, sendo o conceito chave…Qual foi o problema que vc encontrou com hashMap???
Ticianne
Precisava que ele recuperasse por valor, mas o hashmap recupera por referencia…
M
mochuara
Na verdade ele recupera pelo valor. O que pode estar acontecendo é vc não ter implementado equals() e hashCode() no tal objeto armazenado, neste caso ele usa a busca por referência.
Ticianne
Implementei o equals e o hashCode, mas ele nao roda o que eu implementei e sim o da propria Classe.
M
mochuara
Cola sua classe aqui pra gente ver como vc implemetou.
Equals recebe um Object como parametro, e não um Relacionamento. Além disso é preciso ficar atento a outras regrinhas como usar o mesmo conjunto de atributos para calcular ambos equals e hashCode, relacionamento.equals(null) deve retorna false e não um NullPointer, etc...
Ticianne
Relacionamento é um Object… isso faz parte da logica da minha aplicação, tinha que ser assim, senão não funcionava.
Mas resolvi usar ArrayList.
Obrigada por quem respondeu.
M
mochuara
Ticianne:
Relacionamento é um Object… isso faz parte da logica da minha aplicação, tinha que ser assim, senão não funcionava.
Mas resolvi usar ArrayList.
Bom, independente do que sua aplicação faz, implementar equals corretamente é uma das lógicas do Java que é preciso entender senão cedo ou tarde vc vai se deparar com bugs “inexplicaveis” na sua aplicacao. Se os objetos armazenados num ArraList não implementam equals então arrayList.equals(obj) não vai funcionar, assim como arrayList.contains(obj), arrayList.indexOf(obj), etc…