Skip to content

Tag: enhanced loop

Iterating over a HashMap

Iterating over a HashMap using the enhanced loop (foreach) in Java is a good way to keep your code smaller, more legible and usually more semantically coherent.

import java.util.HashMap;
import java.util.Map;
 
class Foo {}
 
public class Main {
 
   public static void main(String args[]){
      Map<Byte, Foo> mHash;
 
      mHash = new HashMap<Byte, Foo>();
      mHash.put((byte)1, new Foo());
      mHash.put((byte)2, new Foo());
      mHash.put((byte)3, new Foo());
 
      for(Foo f: mHash.values()){
         System.out.println(f.toString());
      }
   }
}

Java: métodos com número variável de parâmetros

A partir do Java 5 podemos escrever métodos com um número variável de parâmetros, é o chamado varargs. Com isso podemos criar métodos bem flexíveis e elegantes, principalmente se aplicando isso juntamente com outros recursos como o loop melhorado e polimorfismo.

Esse exemplo cria uma classe Estatistica com o método media que pode receber um número variável de argumentos do tipo int.

public class Estatistica {
    public float media(int... numeros){
        float soma = 0;
        for(int num: numeros)
            soma += num;
        return soma/numeros.length;
    }
    public static void main(String[] args) {
        Estatistica est = new Estatistica();
        System.out.println( est.media(1,2,3) );
        System.out.println( est.media(0,1,2,3,4,5,6,7,8,9,10) );
        System.out.println( est.media(10,20,30) );
    }
}

$ javac Estatistica.java
$ java Estatistica
2.0
5.0
20.0

Legal, né? Isso sim é sobrecarga de método. ;)