Programação II – Java Collections
Framework (JCF)
Christopher Burrows
Arrays
Um
Array é um contentor que armazena um
número fixo de valores de um tipo.
Exemplo:
–
–
int arrayInt[] = new int[9]; <- cria um Array que
pode armazenar 9 números inteiros.
String nomes[] = new String[6]; <- cria um Array
que pode armazenar 6 Strings;
Arrays
Os
arrays são estruturas simples e
eficientes, se se pretender armazenar um
número limitado de valores, mas têm a
limitação de serem estáticos.
Se pretendermos armazenar um número
indefinido de valores, os Arrays não servem.
Aí é necessário ter um contentor próprio para
tal.
Java Collections Framework
O
JCF é um conjunto de interfaces e
algoritmos que permitem criar e manipular
Collections.
Uma Collection, à semelhança dum Array, é
um contentor que permite armazenar vários
objectos num só elemento.
Mas, ao contrário de um Array, não é
necessário especificar a dimensão.
Java Collections Framework
Exemplo:
Collection col = new ImplementacaoDeCollection();
Collection.add(Objecto1);
Collection.add(Objecto2);
–
O tamanho do contentor vai aumentando
consoante os objectos que lhe são adicionados.
Java Collections Framework
As
–
–
–
–
Collections servem essencialmente para:
Agrupar objectos;
Armazenar objectos;
Ordenar objectos;
Pesquisar objectos;
Java Collections Framework
Vantagens
–
–
–
sobre os arrays:
Estrutura dinâmica;
Código mais perceptivel;
Menor “esforço” de programação;
Java Collections Framework Interfaces
Interfaces principais, definidas pelo JCF:
Java Collections Framework Collection
Collection:
–
Define as funcionalidades básicas que os seus
subtipos têm de definir:
.add(Objecto
obj);
.addAll(Collection col);
.remove(Objecto obj);
.removeAll(Collection col);
.retainAll(Collection col);
Java Collections Framework - Map
Map:
–
–
–
Interface que permite armazenar pares de chavevalor, isto é, para cada chave inserida existe um
valor que lhe está associado.
As chaves são obrigatoriamente únicas, enquanto
que os valores que lhes estão associados podem
ser repetidos.
Não é um subtipo de Collection, pelo que existem
métodos definidos pela Interface Collection, que
não contém.
Java Collections Framework - Map
–
Em vez do .add(Objecto obj), tem
o .put((Objecto)Chave, (Objecto)Valor);
–
Em vez do .contains(Objecto obj), tem
o .containsKey((Objecto)Chave), para saber se
contém uma determinada chave,
e .contains((Objecto)Valor), para saber se contém
um determinado valor.
Iteração dos elementos de uma
Collection – for-each
Em
vez de um ciclo “for” normal (for (int i = 0;
i < Collection.length(); i++), pode-se utilizar o
for-each:
–
for(Objecto obj : col) <- para cada obj do tipo
Objecto na Collection col, repete o ciclo.
Iteração dos elementos de uma
Collection - Iterator
Um objecto Iterator serve para percorrer a
Collection.
Este objecto é criado chamando o método .iterator()
da Collection em questão.
Exemplo:
List <String> nomes = new ArrayList<String>();
Iterator <String> itNomes = nomes.iterator();
While (itNomes.hasNext()) {
String nome = itNomes.next();
}
Implementações comuns - Set
Set
–
–
–
e SortedSet(Interface):
HashSet;
TreeSet;
LinkedHashSet;
Implementações comuns - List
List
–
–
(Interface):
ArrayList;
LinkedList;
Implementações comuns - Map
Map
–
–
–
e SortedMap (Interface):
HashMap;
TreeMap;
LinkedHashMap;
Exemplos
List <String> nomes = new ArrayList<String>();
Map <String, String> dicionario = new
HashMap<String, String>();
Exercicio
Aproveitando
o código da aula anterior, criar
uma Lista de Forma(s).
Criar um ciclo que se repita 10 vezes (de x =
0 até x = 10).
Se o número for par (x%2==0), cria um novo
Circulo com x de raio.
Caso contrário, cria um novo Quadrado com
o lado de tamanho x.
Exercicio
Uma
vez inicializada a Forma(como
Quadrado ou Circulo), esta deverá ser
inserida na Lista de formas (ainda dentro do
ciclo).
Após concluido este ciclo, percorrer a Lista e
mostrar a área de cada uma das formas no
seguinte formato:
–
–
“A área do Circulo é: “ + area;
“A área do Quadrado é: “ + area;