Qual a real utilidade das Collections?

Fala galera, seguinte, estou estudando Collections e me veio a dúvida.

Pra que usar elas.

Ex.: se posso fazer tudo que elas fazem no sql do banco?

Qual a utilidade delas alem de fazer o agrupamento de objetos?

Por que preciso aprender a usar uma chave Phillips quando posso usar só uma chave de fenda?

Nunca aprenda apenas uma coisa (por exemplo, SQL) achando que ela resolve tudo.

A essência de aprender é aprender sobre tudo e esquecer seletivamente; não tente aprender “só o que você precisa”, porque na verdade você não sabe o que vai precisar.

Não tem mta coisa, mas soh pra t mostrar aew…

http://www.ibm.com/developerworks/br/java/library/j-5things2/index.html Cinco coisas que você não sabia sobre… a API de Coleções Java, Parte 1
http://www.ibm.com/developerworks/br/java/library/j-5things3/j-5things3.html Cinco coisas que você não sabia sobre… a API de Coleções Java, Parte 2

aprender uma coisa sem saber quando vai usar é ruim mesmo,

1- pense em fazer uma aplicação sem banco de dados que grava tudo em memória. (jogos, matematico, conversores, parsers, apis)

2- usando collections os objetos ficam ali guardados, referênciados, ja com seus tipos, com um get você pega o objeto,

3- imagina eu ficar escrevendo SQL lendo resultSet e convertendo tipo a tipo no JSP ou na tela swing ali tudo junto e desorganizado.

4- pra mim falar em não usar collections é a mesma coisa de dizer não use vetores!

5- collections te ajudam em vários tipos de estruturas de dados. e te facilitam a vida.

Pra que aprender Banco de dados se posso salvar em arquivo…

faça um classe simples chamada Menu.

cada item do menu tem cod|descrição|subMenus

usarei essa classe em vários sistemas com banco de dados diversos, para usá-la faço assim:

[code]new menu(1,“inicio”);

menu.addMenu(new menu(11,“cap 1”);

menu.addItem(“aqui apenas um item”);

menu.getIMenu(11).addItem(new menu(111.“cap 1.1”);[/code]

como ficaria essa classe sem usar BD ja que não há necessidade, implemente a função addMenu(Menu menu)

Pra quem só conhece martelo, parafuso é prego.

:lol:

[quote=fabiobp2000]Fala galera, seguinte, estou estudando Collections e me veio a dúvida.

Pra que usar elas.

Ex.: se posso fazer tudo que elas fazem no sql do banco?

Qual a utilidade delas alem de fazer o agrupamento de objetos?[/quote]
Bom não sei em que linguagem você programava antes, mas deve ser extremamente procedural. Uma collection mesmo você raramente irá utilizar mas existem outras classes que herdam dela, como List e Set e essas com certeza você vai utilizar e muito!

Gostei da pergunta. É daqueles tipos de pergunta que ninguém questiona por que normalmente é um dogma, algo que não se pensa, só se faz.

Respondendo:

Collections são para agrupamento de objetos em memória. Tem algoritmos genéricos que servem para todos os problemas fáceis que você vai encontrar pelo caminho. Juntando essas duas características(rápidas e fáceis), elas se tornaram um padrão da API da linguagem que todos os programadores usam.

Sendo padrão, também são a interface comum entre o programa e suas bibliotecas. Se precisar fazer persistência, seja em banco via SQL/JDBC ou arquivos, normalmente você vai usar as Collections para repassar quais dados serão guardados.

Agora, quando não se usa as Collections? Normalmente quando se tem problemas com as duas características dela:

  1. Memória. Collections guardam todos os seus dados em memória. Se o teu conjunto de dados é maior que a memória disponível na JVM, as Collections não vão servir. Ou você precisa arranjar uma tática mais elaborada para usar as Collections, usando-as de pouco em pouco para não conseguir memória, ou você adota outra estratégia completamente diferente. Um exemplo é Streaming de dados.

  2. Genéricas. Seus tipos de dados servem para a maioria dos casos, mas não para todos. Vários exemplos entram aqui, como resolver problemas de concorrência massiva num Map, Octrees (árvores de nós com 8 filhos cada) para gráficos 3D, Bags, Multikey Maps, Table, Tuplas…

Acho que mesmo ele tendo 80 posts ele ainda não programou em java, quando ele for programar ele vai saber pra que serve.

Sei que SQL não resolve tudo só citei como exemplo.

Não perguntei o conceito de Collections, eu sei o que são, mas não sabia para que era útil. Não adianta vc saber que existe algo se não sabe para que realmente serve e quando usa-la.

tiozao_bp, pbnf e x@ndy obrigado pelas troladas, rsrs.

AlexandreTLazaro, douglaskd e Bruno Laturner valeu as explicações e exemplos, com isso já dá para ter uma boa noção pra que uma collection e suas subclasses podem ser util e quando usa-las.