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.
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
RicardoLuis
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.
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
Luiz_Henrique_Coura
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.
L
Luiz_Aguiar
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
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!?!?!
Y
Yky_Mattshawn
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
Luiz_Henrique_Coura
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
edvaldo.santiago
Pq vc recomenda o Map!?!
M
maquiavelbona
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
Edufa
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
thingol
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ê.