Qual Collection usar?

8 respostas
diego2005

Olá pessoal, preciso armazenar pares de objetos, mas não sei qual collection usar. Se fosse com arrays, eu poderia usar assim:

MyObject[][] pares = new MyObject[n][2];

Pensei em HashMap, mas não sei se ficaria legal, por que é para um chave e um valor, e no meu caso eu preciso armazenar 2 valores, e outra, o HashMap não permite chaves duplicadas.

Gostaria da opinião de vocês pra poder definir o que vai ser o + correto no meu caso.

T+

8 Respostas

T

Eu não sou muito fã do HashMap puro, porque normalmente preciso dos dados ordenados ou por ordem de inserção ( LinkedHashMap ) ou por ordem alfabética ( TreeMap ).

SortedMap &lt Chave, List &lt Valor &gt &gt lista = new TreeMap &lt Chave, List &lt Valor &gt &gt ();
Mantu

Olá!
Não conheço nada pronto na API do Java. Mas pode-se fazer uso de uma técnica de
POG(Programação orientada a gambiarra) :twisted:
Você pode utilizar, por exemplo, um TreeMap e instanciá-lo passando por parâmetro uma implementação (Você deve escrevê-la) de Comparator cujo método compare nunca retorne 0. Só não se esqueça que isso é POG… Logo, podem haver problemas de performance, de lógica, enfim… pode ser que simplesmente não funcione… ou não… :lol:

diego2005

Thingol, pelo que entendi, vou ter um TreeMap com uma chave e uma List com 2 objetos em cada posição, é isso??

No meu caso tanto faz, não vou precisar dos objetos ordenados…

Aldrin_Leal

Crie uma classe pro Valor, e defina a Collection como:

Map<Chave, MyObject[]> = new TipoMap<Chave, MyObject[]);

Porque não? :slight_smile:

diego2005

Aldrin Leal:
Crie uma classe pro Valor, e defina a Collection como:

Map<Chave, MyObject[]> = new TipoMap<Chave, MyObject[]);

Porque não? :slight_smile:

Então, depois que o Thingol deu a idéia, eu fiz assim:

LinkedHashMap<String, ArrayList<MyObject>>

Agora o que é melhor, com ArrayList ou com array??

T

Pergunta: você quer simplesmente armazenar pares de objetos, como (“BA”, “Bahia”), (“AC”, “Acre”) etc.? Precisa de algum mapeamento especial? Senão um simples [][] ou um ArrayList de [] seria suficiente, como o Aldrin sugeriu.

diego2005

Então, acabei de modificar aqui, e fiquei com duas opções:

ArrayList<ArrayList<MyObject>>

ou

ArrayList<MyObject[]>

Qual a melhor opção?? Ou as duas são equivalentes??

Aldrin_Leal

thingol:
Pergunta: você quer simplesmente armazenar pares de objetos, como (“BA”, “Bahia”), (“AC”, “Acre”) etc.? Precisa de algum mapeamento especial? Senão um simples [][] ou um ArrayList de [] seria suficiente, como o Aldrin sugeriu.

Nestes casos, eu sugiro veementemente o uso de commons-collections e o BiDiMap

Ok, você perde Generics, mas em alguns casos, é útil.

Criado 16 de julho de 2007
Ultima resposta 16 de jul. de 2007
Respostas 8
Participantes 4