2014/05/20

Framework collection

new Comment();
Podemos agrupar objetos de duas formas, via interface Collection ou interface Map.

Ambas tem estruturas diferentes, isto quer dizer que a maneira em que os objetos vão ser adicionados ou chamados será diferente. Dentro da interface Collection temos duas subinterfaces:

  • Set: não aceita objetos duplicados
  • List: aceita objetos duplicados
Porem a interface Map possui uma estrutura de dados diferente. Para cada objeto que adicionamos em uma lista do tipo Map, teremos uma chave associada. Pra recuperar o objeto faremos referencia a essa chave como mecanismo de pesquisa (no caso da interface Collection utilizaremos índices). 

Vantagens de usar framework collection 

  • Redução do esforço
  • Aumento na qualidade e na produtividade do desenvolvimento
  • Adaptabilidade
  • Alocação na memória de forma automática

Interfaces e classes do framework collection

Figura 1 - Classes e interfaces que implementam ou estendem a interface Collection
Neste exemplo estou utilizando um arraylist, que implementa List e por consequência implementa Collection:
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

public class ArrayLista {
 public static void main(String[] args) {
  Collection obj = new ArrayList();
  obj.add("Teste");
  System.out.println("Objeto: " +((List )obj).get(0));
 }
}
Perceba-se que na impressão da mensagem, estamos realizando um downcasting para a interface List que o define. Pois o método get() pertence a classe List, que permite acessar a informação dos objetos da lista.

Podemos utilizar diferentes implementações entre métodos utilizando herança e polimorfismo:
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

public class Main {
 
 public static void main(String[] args) {
  // Declaramos duas listas diferentes
  Collection lista1 = new ArrayList();
  Collection lista2 = new HashSet<>();
  // Preenchemos a lista do tipo ArrayList
  inserir(lista1, "Blog do felansu");
  inserir(lista1, "Ferran Gonzalez ALonso");
  inserir(lista1, "gaferran@gmail.com");
  // Preenchemos a lista do tipo HashSet
  inserir(lista2, "Faculdade Delta");
  inserir(lista2, "www.felansu.blogspot.com");
  // Listamos
  listar(lista1);
  listar(lista2);
 }
 
 static void inserir(Collection obj, String str){
  obj.add(str);
 }
 
 static void listar(Collection obj){
  Iterator it = obj.iterator();
  while (it.hasNext()) {
   System.out.println("String da lista: " +it.next());
  }
 }
}
É importante saber que a interface Collection não possui o método get(), por isso utilizamos iteradores. Utilizaremos sempre iteradores para navegar em uma coleção do tipo Set ou List.

If You Enjoyed This, Take 5 Seconds To Share It

0 comentarios:

Postar um comentário