Para dar seguimento aos tutoriais anteriores, não faria sentido não falar de 3 componentes muito úteis em Java e que poderão facilitar a vida a quem está a programar! Começando por explicar o conceito e utilização de arrays, passando pela iteração dos mesmos com ciclos (for e while) e para terminar HashMaps. O que são estes componentes e em que podem ser úteis? Como usar? Leia o artigo e deixe-nos a sua opinião no final!
Correção do desafio
Após termos lançado um desafio no último tutorial, que pode ser consultado aqui, deixamos ao leitor a devida correção:
[wptab name=’Importar’]
Antes de demonstrar as classes novas, é importante clarificar que a classe importar, que será a classe “pai”, irá ter o seguinte corpo:
public class Importar implements Runnable{ @Override public void run() { } }
[/wptab]
[wptab name=’Tijolo’]
A classe tijolo será uma derivada da classe importar:
public class Tijolo extends Importar{ @Override public void run() { // Para que nunca pare de correr, colocamos dentro de um ciclo while(true){ // De 5 em 5 segundos vai escrever try { Thread.sleep(5000); } catch (InterruptedException ex) { } System.out.println("Importação de tijolo feita"); } } }
[/wptab]
[wptab name=’Cimento’]
A classe cimento será uma derivada da classe importar:
public class Cimento extends Importar{ @Override public void run() { // Para que nunca pare de correr, colocamos dentro de um ciclo while(true){ // De 5 em 5 segundos vai escrever try { Thread.sleep(7000); } catch (InterruptedException ex) { } System.out.println("Importação de cimento feita"); } } }
[/wptab]
[wptab name=’Main’]
Para testar deverá usar a seguinte classe main:
public static void main(String[] args) { Exportar exportacao = new Exportar(); Produzir producao = new Produzir(); Cimento cimento = new Cimento(); Tijolo tijolo = new Tijolo(); Thread t1 = new Thread(exportacao); Thread t2 = new Thread(producao); Thread t3 = new Thread(cimento); Thread t4 = new Thread(tijolo); t1.start();t2.start();t3.start();t4.start(); }
[/wptab]
[end_wptabset]
Arrays e ciclo “for”
[wptab name=’Arrays’]
Todos os programadores sabem o que é um array mas, para os mais novatos na linguagem e na área, array é um vetor! Imagine o leitor o seguinte cenário:
A variável “meuArray” guarda a palavra “OLÁ!”. Cada caracter, inclusive o ponto de exclamação, ocupam uma posição no array! Em qualquer situação, os índices em Java começam sempre no 0 (zero). É por isso que se diz que para os programadores “o zero também conta”. Como podemos ver acima, o tamanho do array é 4 posições mas termina no índice 3! Um array é definido da seguinte forma:
ArrayList [nome do array] = new ArrayList<[tipo do objeto a passar]>();
Onde em [nome do array] é o nome que lhe queremos dar e, [tipo do objecto a passar] é o tipo que pode ser String, Int, Float, ou até mesmo alguma classe que o leitor tenha criado!
Para simular o que demonstramos na imagem, o leitor poderá usar o seguinte código em que o objectivo é inserir letras dentro do array!
public static void main(String[] args) { // ArrayList<[tipo do objeto]> [nome do array] = new ArrayList<>(); // Neste caso vamos querer passar objetos do tipo string logo // ArrayList<String> [nome do array] = new ArrayList<>(); ArrayList<String> meuArray = new ArrayList<>(); String letra1 = "O"; String letra2 = "L"; String letra3 = "A"; String letra4 = "!"; // Adicionar a primeira letra // Tamanho do array = 1. Indice 0 ocupado meuArray.add(letra1); // Adicionar a segunda letra // Tamanho do array = 2. Indice 0 e 1 ocupados meuArray.add(letra2); // Adicionar a terceira letra // Tamanho do array = 3. Indice 0, 1 e 2 ocupados meuArray.add(letra3); // Adicionar a terceira letra // Tamanho do array = 4. Indice 0, 1, 2 e 3 ocupados meuArray.add(letra4); // Podemos continuar a adicionar letras }
[/wptab]
[wptab name=’Ciclo “For” primeiro tipo’]
Para testarmos de forma correcta o que escrevemos no array, precisamos de percorrer o mesmo! Para isso, existem funcionalidades que nos permitem aceder aos índices do array de forma muito fácil! Um deles é o ciclo for. Este ciclo pode ser utilizado de várias formas. Uma delas é:
// Percorrer de 0 até ao tamanho (size) do array. // Neste caso vai de 0 até 1 // A cada iteração incrementa for(int i = 0; i < meuArray.size(); i++){ // Escrever o valor da variável i: System.out.println(i); // meuArray.get(i) -> vai buscar à posição i o que o array tem System.out.println(meuArray.get(i)); }
[/wptab]
[wptab name=’Ciclo “For” segundo tipo’]
Outro exemplo de utilização do ciclo for e percorrer o array, poderá ser utilizando o tipo do objecto que está presente. Como exemplo:
// Vou buscar string a string // ao meuArray for(String a: meuArray){ System.out.println(a); }
[/wptab]
[end_wptabset]
Exercício
Para testar a introdução teórica dada em cima, vamos começar por criar uma classe chamada “Gato” com a seguinte estrutura:
public class Gato { String name; public Gato(String name){ this.name = name; } }
Na função main, teremos de construir objectos do tipo gato e, o nosso Array irá conter objectos do tipo Gato! Tal cenário é possível da seguinte forma:
public static void main(String[] args) { ArrayList<Gato> gatos = new ArrayList<>(); // Criar dois gatos Gato gato1 = new Gato("Tobias"); Gato gato2 = new Gato("Zacarias"); // Inserir no array os dois gatos gatos.add(gato1); gatos.add(gato2); }
Com isto, temos dois gatos dentro do nosso Array! Para testar, basta simplesmente utilizar os ciclos for. Como o leitor deve ter lido, existem dois tipos pelo que vamos testar com ambos:
public static void main(String[] args) { ArrayList<Gato> gatos = new ArrayList<>(); // Criar dois gatos Gato gato1 = new Gato("Tobias"); Gato gato2 = new Gato("Zacarias"); // Inserir no array os dois gatos gatos.add(gato1); gatos.add(gato2); System.out.println("Teste com o tipo 1 de for"); for(int i = 0; i < gatos.size(); i++){ System.out.println(gatos.get(i).name); } System.out.println("Teste com o tipo 2 de for"); for(Gato g: gatos){ System.out.println(g.name); } }