Как я перечисляю ключи и значения Хеш-таблицы?

У меня есть проблема; у меня есть некоторые данные, и я показываю его с Hashtable например, я пишу:

 Enumeration keys;
    keys=CellTraffic_v.elements();
    while(keys.hasMoreElements())
      outputBuffer.append(keys.nextElement()+"\n\n");

но это показывает мне, просто оценивает, как я могу показать значения и ключи вместе? например, это

если мой ключ является "A", и мое значение "B", показывают мне это:

A  B

Спасибо...

7
задан T.J. Crowder 7 February 2010 в 08:10
поделиться

3 ответа

У вас есть ключ, верно? Используйте ключ, чтобы получить значение из карты, и у вас есть все сопоставления. Например, в Java со String в качестве типа ключа:

for (String key : map.keySet()) {
    System.out.println(key + ":" + map.get(key));
}

.

8
ответ дан 6 December 2019 в 06:36
поделиться

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();
}
1
ответ дан 6 December 2019 в 06:36
поделиться

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!).

18
ответ дан 6 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: