Olá amigos,
tenho uma Hastable com elementos do tipo de uma classe “aluno”
Hashtable<Numero,Aluno> cursos = new Hashtable<Numero,Aluno>();
Como posso percorrer toda a Hastbale para escrever os valores dos seus elementos ?
Valeu.
Paulito
Olá amigos,
tenho uma Hastable com elementos do tipo de uma classe “aluno”
Hashtable<Numero,Aluno> cursos = new Hashtable<Numero,Aluno>();
Como posso percorrer toda a Hastbale para escrever os valores dos seus elementos ?
Valeu.
Paulito
Usa Enumeration:
for (Enumeration e = seuhash.keys() ; e.hasMoreElements() ;) {
String k = (String)e.nextElement();
String v = seuhash.get(k);
System.out.println(k + ": " + v);
}
Um exemplo completo. (Note que eu prefiro usar HashMap, não Hashtable. Use Hashtable apenas para manter compatibilidade com algumas APIs antigas, não em programas novos.
import java.util.*;
class Numero {
private int n;
public Numero (int pN) { n = pN; }
public String toString() { return Integer.toString (n); }
public int intValue() { return n; }
}
class Aluno {
private String nome;
public Aluno (String pNome) { nome = pNome; }
public String toString() { return "[" + nome + "]"; }
public String getNome() { return nome; }
}
class TesteImpressaoHashTable {
public static void main(String[] args) {
// Use HashMap, e tente sempre usar a interface, não a classe concreta;
// evite usar Hashtable a menos que precise de algum recurso específico
// dessa classe.
Map <Numero, Aluno> cursos = new HashMap <Numero, Aluno> ();
//-- Preenchendo os valores
cursos.put (new Numero (0xCAFEBABE), new Aluno ("James Gosling"));
cursos.put (new Numero (666), new Aluno ("Bill Gates"));
cursos.put (new Numero (1234), new Aluno ("Jose Aparecido"));
//-- Primeira forma (habitualmente mais rápida)
System.out.println ("--- 1a. forma ---");
for (Map.Entry <Numero, Aluno> curso : cursos.entrySet()) {
System.out.printf ("Numero %d : %s%n", curso.getKey().intValue(), curso.getValue().toString());
}
//-- Forma automática (normalmente não a desejada)
System.out.println ("--- 2a. forma ---");
System.out.println (cursos);
//-- Terceira forma (a mais comum, mas costuma ser mais lenta)
System.out.println ("--- 3a. forma ---");
for (Numero numero : cursos.keySet()) {
System.out.printf ("Numero %d : %s%n", numero.intValue(), cursos.get(numero).toString());
}
//-- Se você precisa conservar a ordem em que os dados foram inseridos, use LinkedHashMap.
//-- Repetindo o exemplo anterior com LinkedHashMap
cursos = new HashMap <Numero, Aluno> ();
//-- Preenchendo os valores
cursos.put (new Numero (0xCAFEBABE), new Aluno ("James Gosling"));
cursos.put (new Numero (666), new Aluno ("Bill Gates"));
cursos.put (new Numero (1234), new Aluno ("Jose Aparecido"));
System.out.println ("--- Usando LinkedHashMap ---");
for (Map.Entry <Numero, Aluno> curso : cursos.entrySet()) {
System.out.printf ("Numero %d : %s%n", curso.getKey().intValue(), curso.getValue().toString());
}
}
}