Quando usar Collections - Parte II

Conheça neste artigo os principais métodos da classe Collection e da interface Map.

No artigo anterior eu prometia que iríamos explorar o grupo List, mas, antes de começar a falar sobre Listas de Objetos, é importante que se saiba quais são os principais métodos da Classe Collection e da interface Map.

 

Os Principais métodos da Classe Collection

Add(Object objeto) - Adiciona a coleção a um determinado objeto

 

addAll(Collection outraCollection) – Adiciona todos elementos de outra coleção.

 

clear() - Limpa todos os elementos de uma coleção.

 

contains(Object objeto) – Retorna true se o objeto já fizer parte da coleção.

 

containsAll(Collection outraCollection) – Retorna true caso todos os elementos de outra coleção estiverem presentes em determinada coleção.

 

hashcode() - Retorna o hashcode do objeto.

 

iterator() - Retorna o objeto de iteração com os elementos desta coleção.

 

remove(Object objeto) – Remove o objeto da coleção

 

removeAll(Collection outraCollection) – Remove todos os elementos que pertençam  à coleção corrente e á outra coleção determinada.

 

retainAll(Collection outraCollection) – Remove todos os elementos que não façam parte da coleção corrente e da outra coleção.

 

Size() - Retorna   a quantidade elementos existentes na coleção.

 

toArray() - Retorna  uma matriz de objetos(Object[]) dos elementos que estão contidos na coleção.

 

toArray(<tipo>[]matriz) – Retorna uma matriz do <tipo> fornecido e, se a a matriz contiver a quantidade de elementos suficiente, passa a ser utilizada para armazenamento.

 

Os principais métodos da interface Map

clear() - Limpa todos os elementos do mapa.

 

containsKeys(Object Key) – Verifica se a chave faz parte do mapa.

 

containsValue(Object value) – Verifica se o valor faz parte do mapa.

 

EntrySet() - Retorna um conjunto do tipo (Set) contendo as chaves do mapa.

 

get(Object key)  - Retorna o valor baseado em uma chave.

 

put(Object Key,Object value) – Coloca a chave com base em valor.

 

putAll(Map outroMapa) – Coloca todos os elementos de outroMapa no mapa corrente.

 

remove(Object key) – Remove o elemento com a chave fornecida.

 

Size() - Retorna   a quantidade de elementos existentes no mapa.

 

Value() - Retorna uma coleção com os elementos do mapa.

 

As coleções estão dividas em três grandes grupos: List, Set e Map

Falaremos primeiro sobre o grupo List (Lista de Objetos)

 

A Finalidade do grupo List é gerenciar um grupo de elementos em sequência, muito semelhante a uma matriz, porem com a diferença de que, quando usamos uma classe do grupo List, a quantidade de elementos são modificadas dinamicamente.

 

Listas de Objetos são coleções onde os elementos podem se repetidos podem ocorrer e onde todos tem uma posição definida, a implementação de listas em java é muito semelhante a de Conjuntos (veremos nos próximos artigos).

 

Novo Java existe a interface List, esta declara quais metódos podem ser utilizados pelas classes ArrayList e LinkedList para manipular listas, essas classes possuem mecanismos distintos para representação interna dos objetos da Lista.

 

Na Figura1 e Figura 2 ilustramos o funcionamento das classes: ArrayList e LinkedList:

 


Figura 1



Figura 2

 

ArrayList implementa internamente uma lista como um array e tem um performance melhor, porém não é eficiente em situações que envolvam a inserção e deleção de elementos na lista. Enquanto que com o LinkedList ocorre justamento o inverso, sendo mas lenta para acesso sequencial a elementos da lista.

 

 Veja o código abaixo:

 

public class Lista {

 

      public static void main (String args[]) {

            String pessoas[] = new String[4];

            pessoas[0] = "Dinardo";

            pessoas[1] = "Rosa";

            pessoas[2] = "Rafael";

            pessoas[3] = "Alex";

            for(int i=0; i < pessoas.length; i++)

            System.out.println(pessoas[i]);

           

      }

}

 

Embora funcional, observe que não existe a possibilidade de adicionar mais um nome a essa listagem, (partindo da idéia de que a classe já esta compilada) . Para isso a solução seria criar uma nova matriz com um novo tamanho e fazer a transferência dos elementos de uma para a outra. Veja o exemplo disso a seguir:

 

public class Listas {

      public static void main (String args[]) {

            String pessoas[]= new String[4];

            pessoas[0] = "Dinardo";

            pessoas[1] = "Rosa";

            pessoas[2] = "Rafael";

            pessoas[3] = "Alex";

           

            String galera[] = new String[5];

            for (int i = 0; i < pessoas.length; i++) {

                  galera[i] = pessoas[i];           

            }

            galera[4] = "Anderson";

            pessoas = galera;

            for(int i=0; i < pessoas.length; i++)

            System.out.println(pessoas[i]);

           

      }

}

 

O resultado do código a cima é mostrado a seguir:

 

Dinardo

Rosa

Rafael

Alex

Anderson

 

Mas esse procedimento embora possível, pode ser complicado, trabalhoso e até dispendioso, o que nos leva a procurar outra solução.

 

A solução mais adequada para resolver nosso problema seria usar uma das classes do grupo List. No nosso exemplo usarei a classe ArrayList para demonstrar o procedimento.

 

A seguir veja como ficou o nosso código:

 

import java.util.ArrayList;

 

public class Lista2 {

 

      public static void main(String[] args) {

            ArrayList lista2 = new ArrayList();

            lista2.add("Dinardo");

            lista2.add("Rosa");

            lista2.add("Rafael");

            lista2.add("Alex");

            lista2.add("Anderson");

            for (int i = 0; i < lista2.size(); i++) {

                  System.out.println(lista2.get(i));

            }

      }

 

}

 

O resultado do código acima é mostrado a seguir:

 

Dinardo

Rosa

Rafael

Alex

Anderson

 

No nosso código acima podemos visualizar que o objeto Lista2 do tipo ArrayList controla um conjunto, realiza a inserção de dados de forma similar a uma matriz  , por isso é possível a qualquer momento transformar o seu conteúdo em uma matriz, isso é feito através do uso do método toArray(). A seguir vemos um exemplo do uso deste método:

 

import java.util.ArrayList;

 

public class Lista3 {  

      public static void main(String[] args) {

            ArrayList lista2 = new ArrayList();

            lista2.add("Dinardo");

            lista2.add("Rosa");

            lista2.add("Rafael");

            lista2.add("Anderson");

            lista2.add("Alex");         

            String colegas[] = (String[])lista2.toArray(new String[0]);           

            for (int i = 0; i < colegas.length; i++) {

                  System.out.println(colegas[i]);

            }

      }

}

 

O resultado do código acima é mostrado a seguir e como podem ver é bem semelhante ao do código anterior:

 

Dinardo

Rosa

Rafael

Anderson

Alex

 

No próximo artigo exploraremos continuaremos falando do grupo List e veremos mais alguns exemplos.

Artigos relacionados