Hashtable
implementa Map
. La función Map.entrySet
devuelve una colección (Set
) de instancias Map.Entry
, que tienen los métodos getKey
y getValue
.
Así:
Iterator<Map.Entry> it;
Map.Entry entry;
it = yourTable.entrySet().iterator();
while (it.hasNext()) {
entry = it.next();
System.out.println(
entry.getKey().toString() + " " +
entry.getValue().toString());
}
Si conoce los tipos de las entradas en la tabla hash, puede utilizar plantillas para eliminar las llamadas toString
anteriormente. Por ejemplo, entry
podría declararse Map.Entry<String,String>
si su Hashtable se declara Hashtable<String,String>
.
Si usted puede combinar las plantillas con los genéricos, es francamente corto:
for (Map.Entry<String,String> entry : yourTable.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
que asume yourTable
es una Hashtable<String,String>
. Solo muestra lo lejos que ha llegado Java en los últimos años, en gran medida sin perder su Java-ness esencial.
Ligeramente OT: Si no necesita la sincronización, use HashMap
en lugar de Hashtable
. Si lo hace, use un ConcurrentHashMap
(¡gracias, akappa!).
Un título mejor podría ser: ¿Cómo puedo enumerar las claves y los valores de una Hashtable –
@Lachlan: sí, de hecho. @OP: Te tomaste la libertad de cambiarlo. –