Coleções da API do Java
e Arrays
Fundamentos da Linguagem Java
Ludimila Monjardim Casagrande 2012
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 2
Arrays em Java
Um array em Java é uma coleção ordenada de referências para objetos ou de valores de um tipo primitivo ou de outros arrays.
Arrays em Java são homogêneos, isto é, exceto pelas regras de polimorfismo, todos os elementos de um array devem ser do mesmo tipo.
Sendo assim, quando o array é criado, é especificado o tipo dos elementos que ele irá conter.
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 3
Arrays em Java
Para criar e usar um array são necessários
três passos:
Declaração;
Construção;
Inicialização.
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 4
Declaração de um Array
A sintaxe para a declaração de um array em Java é:
<tipo> <variável>[ ]; ou
<tipo>[ ] <variável>;
Exemplo:
int x[ ]; ou
int[ ] x;
Na declaração não é especificado o tamanho do array.
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 5
Criação de um Array
O tamanho do array só é especificado na sua criação, conforme o exemplo abaixo:
x = new int[10]; //obrigatório definir o tamanho
Somente nesse ponto é que o array x foi criado com 10 posições, indexadas de 0 a 9.
Também é permitido declarar e construir o array na mesma linha, por exemplo:
int x[ ] = new int[10];
String[ ] nomes = new String[5];
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 6
Criação e Inicialização de um Array
Também é possível construir um array já inicializando-
o com alguns valores.
Veja os exemplos:
int[ ] x = {1, 2, 3, 4, 5};
int[ ] x = new int[ ]{1, 2, 3, 4, 5};
Nesses casos, o vetor será automaticamente criado
com cinco posições e já iniciado com os valores entre
{ e }.
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 7
Exemplo de Uso de um Array
public class Array {
public static void main(String[] args){
int[ ] x = new int[10];
x[9] = 8;
//x[10] = 9; //ArrayIndexOutOfBoundsException!!!
System.out.println("O tamanho do array é: " + x.length);
//Laço que insere valores no Array
for(int i = 0; i < x.length; i++){
x[i] = i * 2;
}
for(int i = 0; i < x.length; i++){
System.out.println("O argumento " + i + " é: " + x[i]); } } }
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 8
Coleções em Java
Estruturas de dados são mecanismos para manipular coleções de elementos em um programa.
O pacote java.util oferece algumas classes definidas na API do Java que implementam funcionalidades associadas a estruturas de dados.
Essas classes são conhecidas como “collections” ou “containers”.
Algumas das classes que representam coleções providas pela API do Java são:
Vector, ArrayList, LinkedList
HashSet, TreeSet, entre outras
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 9
Hierarquia de Coleções do Java
Collection
Vector
ArrayList
LinkedList
HashSet
TreeSet
List
Set
Interface que representa
uma coleção genérica
Sub-interfaces de
Collection Diferentes
implementações
da interface List
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 10
Coleções em Java
A interface Collection é a raiz da hierarquia de
coleções da API do Java.
Algumas coleções permitem a existência de objetos
duplicados, outras não.
Algumas coleções são ordenadas e outras não.
Essas são algumas das características que
classificam as coleções em grupos mais
específicos, tais como, Set e List.
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 11
Listas e Conjuntos
List e Set são duas das principais sub-interfaces
da interface Collection.
List é a interface que representa a especificação
de coleções do tipo lista que, por definição,
permitem objetos duplicados e são ordenadas.
Set, por sua vez, representa os conjuntos que,
por definição, não permitem objetos duplicados
e não são necessariamente ordenados.
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 12
Interface Collection
Uma Collection não obedece a uma ordem especial e não rejeita objetos duplicados.
A interface Collection define métodos que permitem à adição e remoção de elementos, a contagem desses elementos e a verificação de existência ou não de um determinado elemento na coleção, por exemplo.
Uma coleção simples não impõe restrições quanto ao tipo dos objetos por ela armazenados.
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 13
Interface Collection
Principais métodos definidos pela interface Collection:
boolean contains(Object o);
boolean containsAll(Collection c);
boolean add(Object o);
boolean addAll(Collection c);
boolean remove(Object o);
boolean removeAll(Collection c);
boolean isEmpty();
int size();
Object[] toArray();
Observe que os métodos não são relacionados com posição.
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 14
Interface List
Uma classe que implementa List representa uma
coleção ordenada que não rejeita duplicatas.
Em algumas listas, a ordem pode ser a ordem na qual
os objetos foram adicionados à coleção, em outras, os
elementos possuem uma “ordem natural” que deve ser
respeitada.
A interface List define métodos relacionados à posição
do elemento na coleção, como:
int indexOf(Object o);
Object get(int index);
void add(int index, Object element);
Object remove(int index);
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 15
Interface Set
As classes que implementam a interface Set
devem definir os métodos de adição de
elementos à coleção de modo a não permitir a
inserção de duplicatas.
Alguns conjuntos consideram o valor null como
um elemento válido, no entanto, só pode existir
uma ocorrência de null em toda a coleção.
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 16
Classe ArrayList
Para entendermos melhor o uso de uma coleção,
vamos estudar a classe ArrayList que corresponde
a uma das implementações da interface List.
ArrayList é uma classe do Java (package java.util)
usada para armazenar objetos de quaisquer tipos.
Um objeto da classe ArrayList pode ser criado com
um tamanho inicial e, se esse tamanho se tornar
insuficiente, automaticamente o “array” será
aumentado de modo transparente para o usuário da
classe.
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 17
Criação de um ArrayList
O exemplo cria um objeto da classe ArrayList,
para armazenar, inicialmente, 15 elementos.
Se nenhum valor é passado no construtor, um
objeto com capacidade para 10 elementos é
criado.
Exemplo:
ArrayList list = new ArrayList(15);
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 18
Adição de Elementos ao ArrayList
Para se armazenar uma referência a um objeto
em um ArrayList, a classe fornece o método
add(Object o).
Exemplo:
1.Aluno a = new Aluno(“ana”, “123”, 1);
2.list.add(a);
O método add(Object o) adiciona o objeto
recebido no final do“array”.
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 19
Exemplo
import java.util.*;
public class CadAlunos {
private static ArrayList alunos = new ArrayList(1);
public static void main(String[ ] args){
alunos.add(“Alessandro");
alunos.add(“Eliane");
alunos.add(“Miriam");
Aluno a = new Aluno(“Carlos", "123", 1);
alunos.add(a);
}
}
O ArrayList aumenta de tamanho
automaticamente.
O ArrayList permite a inserção de
elementos de diferentes tipos.
Listas Homogêneas
A partir do Java 5.0, podemos usar o recurso
chamado Generics para restringir as listas a um
determinado tipo de objetos (e não qualquer
Object):
List<Aluno> alunos = new ArrayList<Aluno>();
alunos.add(a1);
alunos.add(a2);
alunos.add(“Pedro”); // isso geraria erro de compilação
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 20
Listas Homogêneas
O uso de Generics também elimina a
necessidade de casting, já que, seguramente,
todos os objetos inseridos na lista serão do tipo
Aluno:
for(int i = 0; i < alunos.size(); i++) {
Aluno a = alunos.get(i); // sem casting!
System.out.println(a.getNome());
}
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 21
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 22
Adição de Elementos ao ArrayList
Existe ainda uma versão do método add que
também recebe um índice.
Exemplo:
list.add(0, a);
Nesse caso o objeto será armazenado na
posição 0.
Se a posição indicada não existir, o método gera
uma exceção IndexOutOfBoundsException.
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 23
Recuperação de um Elemento
Para recuperar um objeto de um ArrayList usamos
o método get(int index).
Exemplo:
1. int i = 2;
2. Aluno a = (Aluno)list.get(i); //casting necessário
O método get retorna o objeto armazenado na
posição indicada.
Se o índice especificado não existir, o método
gera uma exceção IndexOutOfBoundsException.
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 24
Exemplo
import java.util.*;
public class CadAlunos {
private static ArrayList alunos = new ArrayList(10);
public static void main(String[] args){
Aluno a = new Aluno("André", "andre", "123", 1);
alunos.add(a);
a = new Aluno("Carla", "carla", "456", 2);
alunos.add(a);
a = new Aluno("Cristiane", "cristiane", "789", 3);
alunos.add(2, a);
a = (Aluno)alunos.get(1);
Iterator it = alunos.iterator();
while (it.hasNext()) {
a = (Aluno)it.next();
System.out.println(a); } } }
Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 25
Referências
Java: Como programar
Autores: H. M. Deitel e P. J. Deitel
Editora: Pearson – 6ª Edição
Capítulo 16 – Collections framework
Apostila Caelum http://www.caelum.com.br/curso/fj-11-java-orientacao-objetos/
Complete Java 2 Certification
Study Guide
Sybex