У меня есть проблема; у меня есть некоторые данные, и я показываю его с Hashtable
например, я пишу:
Enumeration keys;
keys=CellTraffic_v.elements();
while(keys.hasMoreElements())
outputBuffer.append(keys.nextElement()+"\n\n");
но это показывает мне, просто оценивает, как я могу показать значения и ключи вместе? например, это
если мой ключ является "A", и мое значение "B", показывают мне это:
A B
Спасибо...
У вас есть ключ, верно? Используйте ключ, чтобы получить значение из карты, и у вас есть все сопоставления. Например, в Java со String в качестве типа ключа:
for (String key : map.keySet()) {
System.out.println(key + ":" + map.get(key));
}
.
entrySet () возвращает перечисление значений в Hashtable.
keySet () возвращает перечисление ключей в Hashtable.
entrySet () возвращает записи (ключ и значение) как Set
for( Iterator iter=hash.keySet().iterator(); iter.hasNext(); ) {
String key = (String) iter.next();
String value = (String) hash.get( key );
}
for( Iteration iter=hash.entrySet().iterator(); iter.hasNext(); ) {
Map.Entry entry = (Map.Entry) iter.next();
String key = (String) entry.getKey();
String value = (String) entry.getValue();
}
или с использованием универсальных типов, и в этом случае ваш хеш - это HashMap
for( String key : hash.keySet() ) {
String value = hash.get( key );
}
for( Map.Entry entry : hash.entrySet() ) {
String key = entry.getKey();
String value = entry.getValue();
}
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
. Например, запись
может быть объявлена Map.Entry
, если ваша Hashtable объявлена Hashtable
.
Если вы можете комбинировать шаблоны с универсальными шаблонами, это будет совершенно коротко:
for (Map.Entry<String,String> entry : yourTable.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
Предполагается, что yourTable
является Hashtable
. Это просто показывает, как далеко продвинулась Java за последние несколько лет, в значительной степени не потеряв своей сущностной Java-способности.
Немного ОТ: Если вам не нужна синхронизация, используйте HashMap
вместо Hashtable
. Если да, используйте ConcurrentHashMap
(спасибо, akappa!).