Java 1.4
protected Hashtable xxx= null;
...
if (xxx != null) {
for (Enumeration pEnum = xxx.keys(); pEnum.hasMoreElements();) {
String A = (String) pEnum.nextElement();
String B = (String) xxx.get(A);
addSomething(A, B);
}
}
...
IMHO este código poderia ser melhor, alguem tem alguma dica interessante?
Edit : Corrigi!
protected Hashtable xxx= null;
...
if (xxx != null) {
for (Iterator iter = xxx.entrySet().iterator(); iter.hasNext(); ) {
Map.Entry entry = (Map.Entry) iter.next();
String A = (String) entry.getKey();
String B = (String) entry.getValue();
addSomething(A, B);
}
}
Hum, não entendi porque no seu código original B é um valor constante (você sempre pega de “packageName”).
Um Hashtable é um Map (assim como HashMap), e implementa todos os métodos de Map.
Usar Map.Entry normalmente costuma ser mais rápido que isso que você fez.
Só para encher o saco, em Java 5.0 ficaria:
protected Hashtable<String,String> xxx= null;
...
if (xxx != null) {
for (Map.Entry<String,String> entry : xxx.entrySet()) {
String A = entry.getKey();
String B = entry.getValue();
addSomething(A, B);
}
}
Veja que em Java 5.0 o “iterator” sumiu. O Neal Gafter estava propondo que no Java 7 teríamos algo parecido com:
protected Hashtable<String,String> xxx= null;
...
if (xxx != null) {
for each (key, value : xxx.entrySet()) {
String A = key;
String B = value;
addSomething(A, B);
}
}
Mas provavelmente não vai dar tempo para incluir as modificações no Java 7 (Dolphin). Essa parte de “closures” foi tão polêmica que ele mesmo acha que não vai dar tempo.