Java 如何枚举哈希表的键和值?

Java 如何枚举哈希表的键和值?,java,hashtable,Java,Hashtable,我有个问题;我有一些数据,我用Hashtable 例如,我写: Enumeration keys; keys=CellTraffic_v.elements(); while(keys.hasMoreElements()) outputBuffer.append(keys.nextElement()+"\n\n"); 但它只显示值我怎么能同时显示值和键呢? 比如这个 如果我的钥匙是“A” 我的值是“B”,告诉我: A B 谢谢…entrySet()返回哈希表中值

我有个问题;我有一些数据,我用
Hashtable
例如,我写:

 Enumeration keys;
    keys=CellTraffic_v.elements();
    while(keys.hasMoreElements())
      outputBuffer.append(keys.nextElement()+"\n\n");
但它只显示值我怎么能同时显示值和键呢? 比如这个

如果我的钥匙是“A” 我的值是“B”,告诉我:

A  B
谢谢…

entrySet()返回哈希表中值的枚举。
keySet()返回哈希表中键的枚举。
entrySet()以集合的形式返回条目(键和值)

或者使用泛型,在这种情况下,您的hash是一个HashMap


你有钥匙对吗?使用键从映射中获取值,您就拥有了所有映射。例如,在Java中,字符串作为键的类型:

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

。函数返回
Map.Entry
实例的集合(
Set
),这些实例具有
getKey
getValue
方法

因此:

假设
yourTable
是一个
Hashtable
。这只是为了说明Java在过去几年中取得了多大的进步,基本上没有失去其基本的Java特性


轻微OT:如果不需要同步,请使用
HashMap
而不是
Hashtable
。如果需要,请使用(谢谢,akappa!)。

我知道,但我想将它们一起显示,例如System.out.println(key+value);更好的标题可能是:如何枚举Hashtable@Lachlan:是的@OP:冒昧地改变了它。这是昂贵的。克劳德的解决方案要好得多。@akappa:这种方法究竟在哪些方面成本更高?这两种解决方案都会迭代键值对集合。在您的解决方案中,您会对每次迭代进行查找,而在entrySet解决方案中,您根本不会进行查找。而且您知道entrySet()方法的实现不会对每个键值对进行查找吗?据我所知,这两种方法都有O(n)复杂度。如果map是HashMap,则两种解决方案很可能都是O(n),但如果map是树映射,则此解决方案是O(n log(n)),而条目集版本可能仍然只是O(n)。即使需要同步,也可以使用ConcurrentHashMap。@akappa:ooooooooh,不错@OP:参考:
for( String key : hash.keySet() ) {
    String value = hash.get( key );
}

for( Map.Entry entry : hash.entrySet() ) {
    String key = entry.getKey();
    String value = entry.getValue();
}
for (String key : map.keySet()) {
    System.out.println(key + ":" + map.get(key));
}
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());
}
for (Map.Entry<String,String> entry : yourTable.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}