Duvida em Usar List ou Map

12 respostas
E

Bom dia pessoal,
Estou com uma dúvida em qual usar!?!?! Um List ou Map.
Preciso criar uma coleção de objetos que será usado em todo projeto constantemente.
Preciso saber qual o melhor e mais viavel em usar… levando em consideração a performace.

Valeu pessoal muito obrigado

Fui.
:smiley:

12 Respostas

N

Depende…
uma uma Map você pode nomealas, com uma List não…
como tu precisa usar?

O ArrayList é um dos objetos mais rápidos que representam listas…

mas depende da sua necessidade…

R

List e Map possuem propósitos diferentes. Você deve verificar qual resolve melhor seu problema:

O List é uma lista, onde você pode adicionar vários valores.
Já o Map, trabalha com o conceito de chave e valor, ou seja, não se trata de uma lista simples.

Se você não precisar armazenar chave e valor, utilize List, senão utilize Map.

Se for utilizar List, de uma olhada neste link:
http://blog.caelum.com.br/2006/10/04/performance-hashset-em-vez-de-arraylist/

M

Opa!

Ler a documentação ajuda em muito tirar as suas dúvidas.
List = http://java.sun.com/javase/6/docs/api/java/util/List.html
Map = http://java.sun.com/javase/6/docs/api/java/util/Map.html

Como podes ver, elas tem finalidades diferentes. Usar constantemente não diz nada, que para termos de performance são parecidas. O que tens que analisar são as implementações (ArrayList, LinkedList, HashMap, IdentityHashMap…), essas sim tem alguma diferença perceptível de performance.

Até!

L

Edvaldo, procure desenvolver seu sistema de tal forma q fique fácil mantê-lo e entendê-lo.

Com relação a performance acredito q o maior problema q vc irá enfrentar serão suas consultas SQL, caso vc esteja usando. :wink:

L

Se nesse seu “uso” vc vai por exemplo ter que percorrer o seu objeto todo List/Map várias vezes, ai é melhor vc utilizar List, se vc precisa acessar seu objeto para recuperar objetos específicos, ai o Map é o melhor caminho.

Melhor definir melhor como será o uso ai desses objetos no seu sistema pra gente até poder ajudar melhor.

E

Então pessoal…
Esse dúvida eu levantei… pq no projeto que estou, haverá necessidade de criar um cache de objetos.
Por isso a pergunta Map ou List!?!?! Entendeu!?!?!

Y

LIST: Você tem de ver, mais simplificadamente, assim: você precisa só armazenar os objetos e depois recuperá-los em uma ordem…

… OU …

[acho que este é o seu caso] MAP: …você precisa armazenar vários objetos e, em determinada situacão, recuperar um objeto específico.

L

edvaldo.santiago:
Então pessoal…
Esse dúvida eu levantei… pq no projeto que estou, haverá necessidade de criar um cache de objetos.
Por isso a pergunta Map ou List!?!?! Entendeu!?!?!

Cache de objetos… então utilize Map.

E

Pq vc recomenda o Map!?!

M

Porque talvez você queira pegar e/ou devolver um objeto específico. Num List, isto não seria possível, pois você não tem uma associação direta por chave ou algo parecido.

Até!

E

Map é bom para acesso dos itens, List é bom para percorrer … mas se eu precisar dessas duas funcionalidades? Tem algum ListMapPowerPlus?

Em C devido a performance eu tinha uma implementação de árvore binária junto com uma lista duplamente encadeada, deu um trabalho para fazer na época, mas depois foi uma mão na roda … rs

T

LinkedHashMap é interessante quando você precisa percorrer o Map na ordem em que os objetos foram inseridos.

TreeMap é interessante quando você precisa que o Map esteja sempre ordenado pela chave.

Um HashMap puro costuma ser mais rápido, mas não tem esses recursos para uso do LinkedHashMap ou do TreeMap.

No caso específico de cache, talvez você precise de um WeakHashMap, mas é preciso saber direitinho usá-lo. Leia a documentação da classe java.util.WeakHashMap.
A idéia de um cache é que, quando o objeto estiver há muito tempo no cache, ele seja limpo automaticamente pela “garbage collection”, em vez de ficar permanentemente à disposição, ocupando recursos desnecessários. Se você precisar de um objeto que estava no cache faz muito tempo e ele tiver sido removido, você tem de recriá-lo. Se souber usar corretamente o WeakHashMap ele faz isso para você.

Criado 26 de março de 2007
Ultima resposta 27 de mar. de 2007
Respostas 12
Participantes 9