Qual Collection usar?

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+

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 ();

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:

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…

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

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

Porque não? :slight_smile:

[quote=Aldrin Leal]Crie uma classe pro Valor, e defina a Collection como:

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

Porque não? :slight_smile:
[/quote]

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??

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.

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??

[quote=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.
[/quote]

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

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