De acordo com o tutorial, onde foi explicado e dado um exemplo prático de arrays e, dois tipos de utilização do ciclo “for”, neste tutorial temos como objetivo dar a conhecer outro ciclo que, há semelhança do ciclo “for”, permite também iterar. Com isto, importa esclarecer que o projeto do artigo anterior será importante para hoje pelo que se é um leitor novo, deverá dar uma visita ao mesmo, aqui.
Com isto, iremos utilizar a mesma classe Gato do artigo anterior:
public class Gato { String name; public Gato(String name){ this.name = name; } }
Ciclos While
[wptab name=’Primeiro tipo’]
O ciclo while ou, “enquanto…fazer” permite, tal como referido anteriormente, iterar. É simples perceber a utilização e o conceito de como funciona! Tudo o que ficar entre as palavras “enquanto…fazer” será feito enquanto a validação for verdadeira, ou seja, como exemplo:
int i = 0; while(i != 5){ System.out.println("Ola Mundo\n"); i++; }
O código acima, o programa irá escrever “Olá Mundo” tantas vezes enquanto a variável “i” for diferente de 5.
[/wptab]
[wptab name=’Exemplo prático’]
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); int i = 0; // Enquanto que a variável "i" for diferente do tamanho do array // é porque ainda há gatos e continuamos no ciclo while(i != gatos.size()){ System.out.println(gatos.get(i).name); i++; }; }
[/wptab]
[wptab name=’Segundo tipo’]
Há semelhança do for, este ciclo tem outro tipo de forma de ser utilizado. O género “fazer…enquanto” também é possivel! A vantagem da utilização deste é que a comparação é feita só ao fim, ou seja, pelo menos entramos sempre uma vez dentro deste ciclo, algo que não acontece no anterior. Exemplo:
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); int i = 0; // Vou entrar uma vez no ciclo! O problema é que se o array // estiver vazio, vai dar erro do{ System.out.println(gatos.get(i).name); i++; }while(i!=gatos.size()); }
[/wptab]
[end_wptabset]
HashMap
A palavra “Map” dá-nos uma grande pista sobre o que este tipo de variáveis pode fazer. Permite-nos criar um mapa das mais diversas situações. Por exemplo, imaginemos o cenário de donos com gatos! Um dono pode ter muitos gatos e, é possivel atribuir todos esses gatos a uma chave. No exemplo abaixo, o gato G1 será mapeado para a Sara e o G2 para o José.
Implementando isto em código:
public static void main(String[] args) { //HashMap<CHAVE, OBJETO> HashMap<String, Gato> mapa = new HashMap<>(); Gato gato1 = new Gato("Tobias"); Gato gato2 = new Gato("Zacarias"); //A chave Sara fica com o gato1 mapa.put("Sara", gato1); mapa.put("José", gato2); System.out.println(mapa.get("Sara").name); System.out.println(mapa.get("José").name); }
Desafio
Voltando à saga de desafios e, se percebeu o conceito de utilização de HashMap e ciclos, desafiamos o leitor a continuar o projeto desenvolvido anterior mas, em vez de a Sara só ter um gato, ter por exemplo 2 e, o José ter 3. Para isso, note-se que terá de ter um HashMap que em vez de receber como objeto um gato, terá de receber um array dos mesmos. Por exemplo:
HashMap<String, ArrayList<Gato>> mapa = new HashMap<>();
Mostre-nos que realmente percebeu o artigo ou deixe as suas dúvidas em comentário ou envie mail para [email protected]