Arrays
Quando desejamos armazenar uma grande quantidade de valores de um determinado tipo, podemos utilizar arrays. Um array é um objeto que pode armazenar muitos valores de um determinado tipo.Podemos imaginar um array como sendo um armário com um determinado número de gavetas. E cada gaveta possui um rótulo com um número de identificação.
Criando um Array
Em Java, os arrays são criados através do comando new.int numeros = new int[100];
int numeros[]; //aqui declaro meu array, porém, não instancie. Se eu tentar usá-lo irá acontecer um erro
int numeros[] = new int[] {1,23,54,19};/*Esse tipo de declaração instancia meu array e já adiciona os valores que são passados entre as chaves. Esse tipo de declaração é usado quando o programador já sabe quais valores devem sem iniciados junto com o array*/
Utilizando as Classes Arrays e Collections
Uma das vantagens de se usar a linguagem Java é que já existem muitas coisas prontas, basta o programador pesquisar a API e conhece-lá conforme suas necessidades. Quando trabalhamos com arrays podemos contar com as Classes Arrays e Collections do pacote java.util. Essas classes possuem os seguintes métodos já definidos:- Método de pesquisa de elemento;
- Método de ordenação;
- Método de exibição de todos elementos;
- Método de inversão de ordem dos elementos contidos no array;
import java.util.Arrays;
import java.util.Collections;
import javax.swing.JOptionPane;
public class ArraysExemplo {
public static void main(String[] args) {
String profInf[] = new String[] {"Renata", "Luiz", "Edilson", "Ednilson", "Janaina", "Gislaine", "Fábio", "Eduardo", "Francisco", "José Arnaldo"};
//método bynarySearch retorna um int que condiz com a posição do elemento buscado no array
//método sort organiza o array em de forma crescente
//método toString imprime o array converte o array em String e exibe o completo na tela
//método reverse inverte a ordem do array
JOptionPane.showMessageDialog(null,"Posição: " + Arrays.binarySearch(profInf, "Janaina"));
Arrays.sort(profInf);
JOptionPane.showMessageDialog(null, "Array de forma organizada crescente : " + Arrays.toString(profInf));
Collections.reverse(Arrays.asList(profInf));
JOptionPane.showMessageDialog(null, "Array de forma organizada invertida : " + Arrays.toString(profInf));
}
}
PS = Todo bom programador deve conhecer os recursos que sua linguagem já oferece pronta, para que ele não fique "reinventando a roda". A API do completa e atualizado Java pode ser encontrada no site da Oracle.
Comparando a utilização de array em um programa Java
Abaixo temos 3 versões de um mesmo programa Java. A função desse programa é ler três valores informados pelo usuário referentes a peso. Ao termino da entrada de dados o programa deve exibir qual o maior, menor e a lista de todos os pesos lidos.Programadores que não sabem utilizar array, ou acha que é perda de tempo escreve códigos Java assim:
import javax.swing.JOptionPane;
public class ArraysExemplo1 {
public static void main(String[] args) {
float peso, x, y;
/*
* a variável peso irá armazenar o peso fornecedo pelo usuário durante a execução do programa
* a variável x irá armazenar a pessoa mais pesada
* a variável y irá armazenar a pessoa mais leve
*/
//inicializando x e y com valores impossíveis... Lembrando que essa é uma técnica não aconselhável
x = -1000;
y = 10000;
for(int i=0; i<3; i++) {
//diferentemente de C, o comando for em Java pode conter a declaração e inicialização de variáveis em sua primeira parte
peso = Float.parseFloat(JOptionPane.showInputDialog("Informe o peso"));
if(peso > x)
x = peso;
if(peso < y)
y = peso;
}
JOptionPane.showMessageDialog(null, "Mais pesado = " + x + "kg");
JOptionPane.showMessageDialog(null, "Mais leve = " + y + "kg");
//não tem como mostrar todos os pesos lidos :(
}
}
Programadores que sabem utilizar array, porém, não conhecem os recursos que a API os oferecem. Irá desenvolver um código Java semelhante a este:
import javax.swing.JOptionPane;
public class ArraysExemplo2 {
public static void main(String[] args) {
float peso[] = new float[3];
float x, y;
/*
* a variável peso irá armazenar o peso fornecedo pelo usuário durante a execução do programa
* a variável x irá armazenar a pessoa mais pesada
* a variável y irá armazenar a pessoa mais leve
*/
for(int i=0; i<3; i++) {
peso[i] = Float.parseFloat(JOptionPane.showInputDialog("Informe o peso"));
}
//inicializando os valores de x e y, com o primeiro valor lido
x = peso[0];
y = x;
for(int i=1; i<3; i++) {
//diferentemente de C, o comando for em Java pode conter a declaração e inicialização de variáveis em sua primeira parte
if(peso[i] > x)
x = peso[i];
if(peso[i] < y)
y = peso[i];
}
JOptionPane.showMessageDialog(null, "Mais pesado = " + x + "kg");
JOptionPane.showMessageDialog(null, "Mais leve = " + y + "kg");
JOptionPane.showMessageDialog(null, "Todos os pesos lidos = " + peso[0] + ", " + peso[1] + ", " + peso[2]);
}
}
Bons programadores, escrevem códigos assim:
import javax.swing.JOptionPane;
import java.util.Arrays;
public class ArraysExemplo3 {
public static void main(String[] args) {
float peso[] = new float[3];
for(int i=0; i<3; i++) {
try {
peso[i] = Float.parseFloat(JOptionPane.showInputDialog("Informe o peso"));
} catch(NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Erro ao coverter o valor digitado!", "Erro", JOptionPane.ERROR_MESSAGE);
}
}
Arrays.sort(peso);//ordena os valores digitados
JOptionPane.showMessageDialog(null, "Mais pesado = " + peso[2] + "kg");
JOptionPane.showMessageDialog(null, "Mais leve = " + peso[0] + "kg");
JOptionPane.showMessageDialog(null, "Todos os pesos informados = " + Arrays.toString(peso));
}
}
Bom pessoal, duvidas e sugestões comentem...
Nenhum comentário:
Postar um comentário