Algoritmos e Programação I Coleções Coleções Coleções

Propaganda
Coleções
„
Algoritmos e Programação I
Java disponibiliza classes que facilitam o
agrupamento e processamento de
objetos em conjuntos:
{
Aula 22
{
Profa. Márcia Cristina Moraes
[email protected]
Profa. Sílvia M. W. Moraes
[email protected]
Prof. Marcelo H. Yamaguti
[email protected]
Prof. Marco Aurélio de Souza Mangan
[email protected]
„
Java Collections Framework
{
Coleções
Coleções (Java Collections Framework).
Estruturas de dados + algoritmos para sua
manipulação.
Arquitetura unificada para representar e
manipular coleções, de forma independente
dos detalhes de sua representação.
2
Coleções
„
O programador simplesmente utiliza as
estruturas de dados sem se preocupar
com a maneira como são implementadas.
„
Vantagens:
Reutilização de código (implementação mais
rápida);
{ Desempenho superior.
„
De forma simplificada, são objetos
capazes de armazenar conjuntos de
referências para outros objetos;
„
Correspondem a classes oferecidas na
biblioteca padrão de Java;
„
Armazenam referências do tipo Object;
{
Maior velocidade de execução.
„ Menos memória.
„
3
4
Material Cedido pelo Prof. Júlio Machado
Material Cedido pelo Prof. Júlio Machado
Classe ArrayList
Genéricos
„
Quando se recupera um elemento de uma
coleção, é necessário colocar um cast
{
{
„
Genéricos
{
{
5
Inconveniente
Inseguro (o compilador não testa o cast, que pode gerar
erro durante a execução do programa)
Fornecem uma maneira de comunicar o tipo de uma
coleção ao compilador para que possa ser verificado
Quando o compilador conhece o tipo do elemento da
coleção, ele pode verificar se a mesma está sendo
usada corretamente e pode inserir os casts corretos nos
valores recuperados da coleção
6
Material Cedido pela Profa. Isabel Manssour
1
ArrayList
„
ArrayList são objetos da classe ArrayList.
{
„
ArrayList
„
Criando um ArrayList: Construtores
ArrayList() – constrói uma lista vazia com
capacidade para 10 objetos
{ ArrayList(int capacidadeInicial) –
constrói uma lista vazia com uma capacidade
inicial igual ao argumento capacidadeInicial
{
Utilizamos o pacote java.util.ArrayList
„ import java.util.ArrayList;
ArrayList armazena referências a objetos.
7
ArrayList – Exemplo de Utilização
dos Construtores com Genéricos
8
ArrayList - Métodos
import java.util.*;
public class CriacaoArrayListProfessor
{
public static void main(String args[]){
„
Inserindo elementos em um ArrayList
{
public boolean add(E o)
{
public void add(int index,
E element)
//Criando um ArrayList com capacidade de armazenamento inicial de
//10 elementos da classe Professor
„
ArrayList<Professor> listaTamanhoPadrao = new ArrayList<Professor>();
//Criando um ArrayList com capacidade de armazenamento definida em
//5 elementos da classe Professor
„
ArrayList<Professor> listaTamDefinido = new ArrayList<Professor>(5);
}
}
Insere um elemento o no final da lista
Insere um elemento na posição index da
lista, move os elementos que estiverem na
posição index e nas posições subseqüentes
para a direita acrescentando 1 no valor do
seu índice
9
ArrayList – Exemplo de Utilização
dos Métodos add
10
ArrayList – Métodos
....
//Criando um ArrayList com capacidade de armazenamento inicial de 10 elementos
ArrayList<Professor> lista = new ArrayList<Professor>(10);
„
//Criando instâncias manualmente para a classe Professor
Professor p1 = new Professor("Maria Aparecida", 16);
Professor p2 = new Professor("Joao Vicente", 12);
//Solicitando dados através do Scanner para criação de um professor
Scanner teclado = new Scanner(System.in);
System.out.println("Digite o nome do professor a ser cadastrado: ");
String nome = teclado.nextLine();
System.out.println("Digite a carga horária do professor a ser cadastrado: ");
int ch = teclado.nextInt();
Professor p3 = new Professor(nome, ch);
Para percorrer os elementos da lista é
necessário
{
public int size()
{
public E get(int index)
„
„
//Adicionando os objetos p1 e p2 no ArrayList
lista.add(p1);
lista.add(p2);
Retorna o número de elementos na lista
Retorna o elemento que está na posição
index da lista.
//Adicionando o professor p3 na primeira posicao (posicao 0) do ArrayList
lista.add(0,p3);
....
11
12
2
ArrayList – Exemplo de Utilização
dos Métodos size e get
ArrayList – Métodos
....
//Obtem o tamanho atual da lista - quantidade de elementos
cadastrados
int tamanho = lista.size();
„
//Percorre a lista a partir do índice 0 até o tamanho
System.out.println("Dados dos Professores na Lista
Original:");
Professor aux;
for(int i = 0; i < tamanho; i++){
Alterando o objeto de uma posição da
lista
{
public E set(int index, E element)
„
Altera o elemento da lista que está na
posição index.
//recupera um Professor da lista
aux = lista.get(i);
//imprime os dados do Professor usando toString de
//Professor
System.out.println(aux);
}
13
14
....
ArrayList – Exemplo de Utilização
dos Método set
ArrayList - Métodos
....
//Altera a carga horária do professor
//p1 e modifica o professor p1
//na lista, o professor p1 está na
//posicao 1 da lista
p1.setCargaHoraria(30);
lista.set(1, p1);
.....
„
Retirando elementos do ArrayList
{
public E remove(int index)
„
{
Remove um elemento de uma posição
específica da lista, descola os elementos
subsequentes para a esquerda (subtraindo
um do valor de seus índices).
public boolean remove(Object o)
„
Remove um objeto da lista, e retorna true se
ele estiver presente na lista.
15
16
ArrayList – Exemplo de Utilização
dos Método remove
ArrayList - Métodos
....
//Remove o elemento da posicao 2 - professor cujos dados foram digitados
no teclado
lista.remove(2);
System.out.println("\nDados dos Professores Após a Retirada do
Ultimo Professor cadastrado");
for(int i = 0; i < lista.size(); i++){
aux = lista.get(i);
System.out.println(aux);
}
„
Recuperando índices de objetos contidos na
lista
{
public int indexOf(Object elem)
„
//Tenta renover da lista o professor p2 que já foi removido
boolean removeu = lista.remove(p2);
if(removeu)
System.out.println("\n"+ p2 + "\nRemovido com sucesso da lista.");
else
System.out.println("\nNão foi possível remover o professor da lista
pois ele não foi encontrado na mesma!");
....
17
{
Busca pela primeira ocorrência do argumento elem
na lista e retorna o seu índice.
public int lastIndexOf(Object elem)
„
Retorna o índice da última ocorrência do argumento
elem na lista.
18
3
ArrayList – Exemplo de Utilização
dos Método indexOf e lastIndexOf
ArrayList - Métodos
....
//Criando instâncias manualmente para a classe Professor
Professor p1 = new Professor("Maria Aparecida", 16);
Professor p2 = new Professor("Joao Vicente", 12);
Professor p3 = new Professor("Paulo Ricardo", 40);
„
{
//Adicionando os objetos p1 e p2 no ArrayList
lista.add(p1);
lista.add(p2);
lista.add(p3);
//Busca o índice do professor p2
int indice = lista.indexOf(p2);
System.out.println(p2 + "\nEstá no índice "+ indice + " da lista.");
Retorna true se a lista não contém elementos
19
20
ArrayList - Métodos
„
Garantindo a capacidade da lista
{
public void clear()
„
public boolean isEmpty()
„
Remoção de todos os elementos da
lista
{
Retorna true se a lista contém o elemento
Verificando se a lista está vazia
{
ArrayList - Métodos
„
public boolean
contains(Object elem)
„
„
//Insere mais uma vez o professor p2 na lista
lista.add(p2);
//Recupera o índice da última ocorrencia do professor p2
System.out.println("\nUltima posicao que professor p2 está
cadastrado é: "+ lista.lastIndexOf(p2));
....
Verificação se a lista contém um
elemento
Remove todos os elementos da lista, a lista
estará vazia após a execução deste método.
21
ArrayList – Exemplo de Utilização
dos Métodos contains, isEmpty, clear e
ensureCapacity
public void
ensureCapacity(int minCapacity)
„
Aumenta a capacidade da lista para garantir
que no mínimo a lista contenha o tamanho
mimCapacity
„
Nota: o ArrayList aumenta a sua capacidade
automaticamente para que a lista possa
crescer na medida em que os elementos são
adicionados – custo de realocação de
memória. Ensure Capacity reduz este custo. 22
ArrayList – Exemplo de Utilização
dos Métodos contains, isEmpty, clear e
ensureCapacity
....
//Criando um ArrayList com capacidade de armazenamento inicial
//de 2 elementos da classe Professor
....
//Adicionando os objetos p1, p2 e p3 no ArrayList
lista.add(p1);
lista.add(p2);
lista.add(p3);
ArrayList<Professor> lista = new ArrayList<Professor>(2);
//Verifica se a lista contém o professor p2 caso a lista não
//esteja vazia
if(!lista.isEmpty()){
boolean existeLista = lista.contains(p2);
if(existeLista)
System.out.println("Professor p2 está na lista");
else
System.out.println("Professor p2 não está na lista");
}
else System.out.println("Lista está vazia");
//Garantindo a capacidade de no mínimo 5 elementos na lista
//para reduzir gastos com redimensionamento automático
lista.ensureCapacity(5);
//Criando instâncias manualmente para a classe Professor
Professor p1 = new Professor("Maria Aparecida", 16);
Professor p2 = new Professor("Joao Vicente", 12);
Professor p3 = new Professor("Paulo Ricardo", 40);
....
23
....
24
4
ArrayList – Exemplo de Utilização
dos Métodos contains, isEmpty, clear e
ensureCapacity
Maiores Informações sobre Collections
....
//Removendo todos os elementos da lista
lista.clear();
„
http://java.sun.com/j2se/1.5.0/docs/gui
de/collections/index.html
if(lista.isEmpty())
System.out.println("Lista está vazia!");
else
System.out.println("Lista não está vazia.");
....
25
26
Referências
„
H.M. Deitel, P.J. Deitel. Java – Como
Programar. Ed. Bookman. 4a ed. 2002.
„
Página da Sun.
http://java.sun.com/j2se/1.5.0/docs/gui
de/language/generics.html
27
5
Download