Collections

3 respostas
P

desculpa a pergunta pode até parecer idiota… :oops: mas Para que e onde usar (Collections )???

3 Respostas

Rafael_Steil

Muito provavelmente voce ja usou algo da Collections, apenas nao associou as cosias :slight_smile:

ArrayList, HashMap, LinkedHashMap, LinkedList, HashSet e varias outras sao classes da Collections Framework, ou seja, fornece classes para trabalhar com listas simples, ordenadas, maps ( elementos no formato chave=valor ) e assim por diante.

Por exemplo, com arrays eh possivel ter uma serie de objetos/referencia do mesmo tipo em apenas uma variavel:

String strArray[] = {"Item 1", "Item 2", "Item 3"};

Porem, arrays tem algumas limitacoes, tais como nao ser possivel redimenciona-los; somente podem guardar referencias do mesmo tipo ( ao menos que seja usado um array de Objetc’s, claro ); …

A solucao mais usada nesses casos eh usar um ArrayList, que eh apenas uma lista simples, sequencial e nao ordenada, onde podemos colocar qualquer numero e tipo de referencias, tendo disponivel metodos para inserir itens em determinada posicao, busca por itens, facil remocao e adicao de itens e varias outras utilitdades, que uma rapida consulta no JavaDoc ajudam a esclarecer :slight_smile:

ArrayList minhaList = new ArrayList();
minhaList.add("Item 1");
minhaList.add("Item 3");
minhaList.add("Item 4");

“Mapas” ( HashMap, Hashtable - do java 1 ) sao uteis quando voce precisa associar um nome a algum determinado valor":

HashMap meuMap = new HashMap();
meuMap.put("nome", "Rafael");
meuMap.put("cidade", "Sao Paulo");

Voce pode usar qualquer tipo de objeto, seja no nome da chave quanto no valor dela. Ha dezenas de metodos para iteracao e utilizacao, como acessar uma chave/valor especifico, iterar somente pelas chaves ou somente pelos valores etc etc…

Ha ainda outros tipos e especializacoes, como listas ordenadas, listas encadeadas…
O Paulo esta escrevendo um otimo tutorial exatamente sobre este assunto, deve estar entrando no ar nos proximos dias.

Rafael

ricardolecheta

1 - colocar objetos em uma lista
2 - ordenar
3 - colocar objetos em uma tabela Hash

4 - o framework de collections é bem poderoso, existem muitos métodos nas classes e também é fácil de percorrer e recuperar os elementos de uma collection

A vantagem que vc não precisaria se preocupar em implementar uma Lista por exemplo, o pessoal da SUN já fez este trabalho.

Rafael_Afonso

Você pode encarar as Collections como um array mais flexível.
Suponha que você tenha um array de 10 Objects. Você vai inserindo seus seus valores. Daí quando percebe o array está todo preenchido. E agora, como faço? Crio um novo array com capacidade maior e passo o conteúdo do do 1o. array para o novo? Mas se este novo array lotar de novo? Devo repetir o mesmo processo? E onde coloco os novos elementos? No final do Array ou em alguma outra posição? Então quer dizer que devo ter um marcador para indicar a ultima posição ocupada? E se quiser inserir um elemento no meio do array? Quer dizer que vou ter que deslocar os elementos posteriores a posição onde quero colocar e ainda incrementar o indicador de ultima posição? E se eu quiser um array ordenado? Vou ter que criar um método de ordenação eu mesmo?
:evil:
Como percebeu é muita coisa com que se preocupar. Tanto que podem até te desviar de seu trabalho principal. É para isso que foram inventada a interface Collection e suas implementações como List e Set. Tamanho? Não se preocupe, isso é problema da implementação? Quer adicionar sem se importar onde? É só usar add(). Quer ordenar? Você pode usar um TreeSet ou usar Collections.sort(List). E se eu quiser inserir no meio? Use List.add(pos, objeto) (com Set isso não é possível). E se eu não quiser que haja elementos repetidos. É para isso que Set serve. E se eu quiser um array? use o métod toArray().
:smiley:
Como deu para perceber, as Collections tem muitas propriedades que a tornam interessante.

Espero que isso ajude.

Criado 21 de junho de 2003
Ultima resposta 21 de jun. de 2003
Respostas 3
Participantes 4