Módulo 05 Arrays - BCC Unifal-MG

Transcrição

Módulo 05 Arrays - BCC Unifal-MG
Módulo 05
Arrays
Última atualização: 11/06/2010
Objetivos
• Declarar e criar arrays.
• Explicar como iniciar os elementos de um array.
• Determinar o número de elementos de um array.
• Percorrer um array com o loop for tradicional e com o loop for
aprimorado
• Criar um array multidimensional.
• Usar a classe utilitária java.util.Arrays
Declarando Arrays
• Array é um grupo de objetos do mesmo tipo.
• Podemos declarar arrays de tipos primitivos ou de referência:
char s[];
Ponto p[];
ou
char[] s;
Ponto[] p;
• Os exemplos acima criam o espaço para uma referência.
• Um array é um objeto e, portanto deve ser criado com o operador
new.
Criando Arrays
• Use o operador new para criar um objeto do tipo array.
• Por exemplo, um array primitivo (char):
public char[] criarArray() {
char [] s;
s = new char[26];
for (int i=0; i < 26; i++ ) {
s[i] = (char) (‘A’ + i);
}
return s;
}
Criando Arrays
• Outro exemplo: um array de objetos:
public Ponto[] criarArray() {
Ponto [] p;
p = new Ponto[3];
for (int i=0; i < 3; i++ ) {
p[i] = new Ponto(i, i+1);
}
}
return p;
Iniciando Arrays
Cria um array com valores iniciais:
String nomes[];
nomes = new String[3];
nomes[0] = “Rodrigo”;
nomes[1] = “Natália”;
nomes[2] = “Jean”;
Data [] data;
data = new Data[3]
data[0] = new Data(22,07,1964);
data[1] = new Data(07,05,1977);
data[2] = new Data(06,02,2005);
ou
String [] nomes = {“Rodrigo”,
“Natália”, “Jean”};
ou
Data [] data ={new Data(22,07,1964),
new Data(07,05,1977),
new Data(06,02, 2005)
};
Arrays Multidimensionais
• Arrays de arrays:
int duasDimensoes [][] = new int [4][];
duasDimensoes[0] = new int[5];
duasDimensoes[1] = new int[5];
// A linha abaixo resulta em erro, pois a primeira dimensão
// deve ser especificada.
int duasDimensoes [][] = new int [][4];
Arrays Multidimensionais
• arrays de arrays não-retangulares:
int duasDimensoes [][]
duasDimensoes[0] = new
duasDimensoes[1] = new
duasDimensoes[2] = new
duasDimensoes[3] = new
= new int [4][];
int[2];
int[4];
int[6];
int[8];
• Array de quatro arrays com cinco inteiros cada (array retangular):
int duasDimensoes[][] = new int[4][5];
Limites em Array
• Todos índices de arrays iniciam em 0:
...
int [] lista = new int[10];
…
…
for(int i=0; i < lista.length; i++) { //lista.lenght retorna 10
System.out.println(lista[i]);
}
...
• A variável length utilizada em arrays multi-dimensionais:
int duasDimensoes[][] = new int[4][5];
System.out.println(duasDimensoes.length) // retorna 4
System.out.println(duasDimensoes[0].length) // retorna 5
Percorrendo um Array com o Loop for
Aprimorado
• O for aprimorado, também conhecido como foreach, foi introduzido a partir do Java
5
• O loop for aprimorado trabalha basicamente com dois tipos: arrays e coleções
Aprenderemos coleções no capítulo 10 deste curso.
public void testeLoopArray( ) {
int[] primos = new int[] { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 };
}
// Exibe os números primos usando o loop for aprimorado
for (int n : primos) {
System.out.println(n);
}
Redimensionando Arrays
• Um array não pode ser redimensionado
• Podemos utilizar a mesma variável de referência apontando para um
array totalmente novo:
int meuArray[] = new int[6];
meuArray = new int[10];
A Classe java.util.Arrays
Introduzida no Java 5 – Tiger
A classe java.util.Arrays possui um conjunto de métodos
estáticos utilitários (Aprenderemos métodos estáticos no módulo
07. Por hora apenas aprenderemos como utilizá-los):
Estes métodos utilitários ajudam o programador no trabalho
com arrays.
A maioria destes métodos é bastante útil se você possuir um
array de tipos numéricos primitivos.
Métodos úteis:
toString(), deepToString(), deepEquals(), equals(), fill(), sort(),
binarySearch()
O Método toString( ) da Classe Arrays
Exibe o conteúdo de um array
Exemplo:
System.out.println(Arrays.toString(meuArray));
O Método deepToString da Classe Arrays
• Este método recebe um array de objetos e exibe o seu conteúdo,
incluindo o conteúdo de qualquer array que ele possa conter.
Exemplo
String[][] ticTacToe = { {"X", "O", "O"},
{"O", "X", "X"},
{"X", "O", "X"}};
System.out.println(Arrays.deepToString(ticTacToe));
gera a saída:
[[X, 0, 0], [0, X, X], [X, 0, X]]
Muito útil quando temos três ou mais níveis de arrays e não
desejamos escrever nossas próprias rotinas recursivas de impressão.
O Método deepEquals Classe Arrays
Método para comparação de arrays multidimensionais
String[][] ticTacToe = { {"X", "O", "O"}, {"O", "X", "X"}, {"X", "O", "X"}};
String[][] ticTacToe2 = { {"O", "O", "X"}, {"O", "X", "X"}, {"X", "O", "X"}};
String[][] ticTacToe3 = { {"X", "O", "O"}, {"O", "X", "X"}, {"X", "O", "X"}};
if (Arrays.deepEquals(ticTacToe, ticTacToe2)) {
System.out.println("Matrizes 1 e 2 são iguais.");
} else {
System.out.println("Matrizes 1 e 2 são diferentes."); // Saída gerada
}
if (Arrays.deepEquals(ticTacToe, ticTacToe3)) {
System.out.println("Matrizes 1 e 3 são iguais."); // Saída gerada
} else {
System.out.println("Matrizes 1 e 3 são diferentes.");}
Exemplo: ArraysTester
Mostra diversos outros métodos úteis da classe Arrays, como:
equals(), fill(), sort(), binarySearch()
Executar e estudar no laboratório ou em casa !!!
Os Métodos System.arrayCopy( ) e outros métodos utilitários da
classe Arrays serão vistos no capítulo 10 - Coleções
PERGUNTAS?

Documentos relacionados

Introdução à linguagem de programação java. - fcfrp

Introdução à linguagem de programação java. - fcfrp public class Operadores { public static void main(String[] args) { int i = 4; int j = 2; System.out.println("i + j: " + (i + j)); System.out.println("i - j: " + (i - j)); System.out.println("i * j:...

Leia mais