Hashtable
реализует Map
. Функция Map.entrySet
возвращает коллекцию (Set
) Map.Entry
экземпляров, которые имеют методы getKey
и getValue
.
Итак:
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());
}
Если вам известны типы записей в Hashtable, вы можете использовать шаблоны для исключения вызовов toString
, указанных выше. Например, entry
может быть объявлено Map.Entry<String,String>
, если объявлена ваша Hashtable Hashtable<String,String>
.
Если вы можете комбинировать шаблоны с шаблонами, это совсем коротко:
for (Map.Entry<String,String> entry : yourTable.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
Предполагается, что yourTable
является Hashtable<String,String>
. Это просто показывает, как далеко продвинулась Java за последние несколько лет, в значительной степени, не теряя своей существенной Java-сущности.
Слегка ОТ: Если вам не нужна синхронизация, используйте HashMap
вместо Hashtable
. Если вы это сделаете, используйте ConcurrentHashMap
(спасибо, akappa!).