Arrays ArrayLists
Arrays ArrayLists
2
Array
• Grupo de variáveis (chamados elementos ou
componentes) que contém valores todos do mesmo tipo.
• Os elementos de um array podem ser tipos primitivos ou
tipos por referência.
3
Array
• O primeiro elemento do array no Java sempre é indexado
como 0.
• A expressão de acesso ao array é formada pelo nome do
array seguido pelo índice da posição entre colchetes:
– Ex.: c[0]
• O índice do array deve ser sempre um inteiro não
negativo.
4
Array
• Em Java, um array é um objeto.
• O atributo de instância length retorna o comprimento do
array:
– Ex.: c.length
• Não é possível alterar o valor do atributo length.
• É possível fazer operações utilizando os valores
armazenados no array, como em sum =
c[1]+c[2]+c[3].
5
Declarando e criando arrays
• Como qualquer outro objeto, um array é criado por meio
da palavra reservada new:
– int[] c = new int[12];
– String[] b = new String[100];
• A expressão new retorna uma referência que é
armazenada na variável do array.
• Quando criado, o array é inicializado com zeros (tipo
primitivo numérico), false (boolean) e null (referências);
6
Inicializador de array
• É possível criar um array e inicializar seus elementos com
um inicializador de array:
– int[] n = {10,20,30,40,50};
7
Exercício
• Suponha que uma empresa precisa contabilizar a
quantidade de vendas por faixa de valor para um relatório.
As faixas de valores são as seguintes: R$0 – R$99 ; R$100
– R$199; R$200 – R$299; R$300 – R$399; R$400 –
R$499; R$500 – +. Faça um programa que gere 50
valores de vendas aleatórias entre R$1 e R$700 e
contabilize o número de vendas por faixa. Essa
contabilização deve ser armazenada em um vetor. Dica:
para gerar valores inteiros aleatórios, utilize a classe
SecureRandom.
8
Instrução for aprimorada
• É uma instrução for que pode ser usada com arrays e
evita que tente-se acessar posições do array que não
existem:
9
Instrução for aprimorada
public class EnhancedForTest {
public static void main(String[] args) {
int[] array = {87, 68, 94, 100, 83, 78, 85, 91, 76, 87};
int total = 0;
10
Exercício
• Escreva um aplicativo que usa uma instrução for
aprimorada para somar os valores inteiros passados pelos
argumentos de linha de comando.
11
Passando arrays para métodos
• Podemos passar um array inteiro como argumento para
um método.
• Neste caso, passamos como argumento apenas o nome
do array, sem colchetes.
• Esta passagem é feita por referência, já que o array é um
objeto.
12
Passando arrays para métodos
• Podemos passar também valores individuas contidos em
um array para um método.
• Neste caso, usamos o nome do array e os colchetes
indicando qual posição do array será passada como
argumento.
• Neste caso, a passagem do argumento é feita por valor.
13
Exercício
• Execute o seguinte código:
https://github.com/pdeitel/JavaHowToProgram11e_EarlyO
bjects/blob/master/examples/ch07/fig07_13/PassArray.jav
a
• O que você percebeu de diferente entre as duas
passagens de argumento?
14
Listas de argumentos de comprimento variável
15
Listas de argumentos de comprimento variável
16
Exercício
• Escreva um aplicativo que calcula o produto de uma serie
de inteiros que são passados para o método product
utilizando uma lista de argumentos de comprimento
variável. Teste seu método com várias chamadas, cada
uma com uma quantidade de argumentos.
17
Classe Arrays
• Esta classe da API Java oferece uma serie de métodos static
que implementam rotinas úteis para manipulação de arrays.
Exemplos:
– Arrays.sort(): ordena o conteúdo de um array.
– Arrays.binarySearch(): procura um elemento em um array
ordenado.
– Arrays.equals(): compara dois arrays.
• Vamos a um exemplo:
https://github.com/pdeitel/JavaHowToProgram11e_EarlyObjec
ts/blob/master/examples/ch07/fig07_22/ArrayManipulations.ja
va
18
ArrayList
• A API Java fornece várias estruturas de dados pré-
definidas, denominadas coleções (collections).
• Esta coleções oferecem uma vasta gama de métodos que
facilitam muito o trabalho com estruturas de dados.
• A coleção ArrayList<T> é uma delas.
• O T deve ser substituído, no momento da declaração, pelo
tipo dos dados que serão armazenados na coleção.
Exemplo: ArrayList<String> list;
19
ArrayList
• Classes que possuem este <T> são chamadas de classes
genéricas.
• Tipos primitivos não podem ser usados nestas classes
genéricas.
• A saída é usar classes conhecidas como wrappers:
Integer, Float, Double, etc.
20
ArrayList: alguns métodos úteis
Método Descrição
add Adiciona um elemento ao final do ArrayList
clear Remove todos os elementos do ArrayList
contains Retorna true se o ArrayList contém o elemento especificado; caso contrário, retorna false
get Retorna o elemento do índice especificado
indexOf Retorna o índice da primeira ocorrência do elemento especificado no ArrayList
remove Remove a primeira ocorrência do valor especificado ou o elemento no índice especificado
size Retorna o número de elementos armazenados em ArrayList
21
ArrayList - Exemplo
• Vamos conferir o exemplo em:
https://github.com/pdeitel/JavaHowToProgram11e_EarlyO
bjects/blob/master/examples/ch07/fig07_24/ArrayListColle
ction.java
22
Exercício
• Este sistema vai controlar a emissão de senhas para atendimento em uma repartição
pública. O sistema deve permitir as seguintes opções para manipulação da fila
composta pelas senhas emitidas:
– Emitir nova senha: o sistema deve emitir um valor inteiro aleatório para a senha e
posicioná-lo no final da fila;
– Desistir da fila: o sistema deve permitir que o usuário remova da fila um usuário que
desistiu de ser atendido;
– Atender usuário: o sistema deve permitir que o usuário portador da senha que está na
frente da fila seja atendido. A senha deve ser removida da fila.
– Buscar posição na fila: o sistema deve permitir que o usuário informe o número da senha e
receba como retorno a sua posição na fila.
– Imprimir fila: o sistema deve imprimir na tela os números de senha que estão aguardando
na fila;
• Faça um menu baseado em linhas de comando para manipulação do sistema.
23
Exercício – desafio extra
• Faça uma modificação no programa do exercício anterior:
– Agora temos duas filas, a comum e a preferencial.
– Sempre que houver um novo atendimento, a senha na fila
preferencial deve ser atendida primeiro. Há uma restrição para
esta regra: não podem ser atendidas mais que duas senhas
consecutivas da fila preferencial.
24