Java – While e HashMap

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

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.

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++;
        };
}

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());
}

 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é.

hashmap

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<>();

hashmap2

Mostre-nos que realmente percebeu o artigo ou deixe as suas dúvidas em comentário ou envie mail para erbi.silva@techemportugues.com

Fonte das imagens