Как мне перечислить ключи и значения Hashtable? - PullRequest
7 голосов
/ 07 февраля 2010

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

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

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

если мой ключ будет "A" и моя ценность будет "B", покажи мне это:

A  B

Спасибо ...

Ответы [ 3 ]

18 голосов
/ 07 февраля 2010

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

8 голосов
/ 07 февраля 2010

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

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

.

1 голос
/ 07 февраля 2010

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...