繁体   English   中英

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

[英]How do I enumerate the keys and values of a Hashtable?

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

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

但是它向我展示了价值观我如何才能一起展示价值观和钥匙? 例如这个

如果我的键是“ A”,值是“ B”,请告诉我:

A  B

谢谢 ...

Hashtable实现Map Map.entrySet函数返回具有getKeygetValue方法的Map.Entry实例的集合( Set )。

所以:

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());
}

如果您知道哈希表中条目的类型,则可以使用模板消除上面的toString调用。 例如,如果您的哈希表被声明为Hashtable<String,String> ,则entry可以声明为Map.Entry<String,String> Hashtable<String,String>

如果您可以将模板与泛型结合使用,那就太短了:

for (Map.Entry<String,String> entry : yourTable.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}

假设yourTableHashtable<String,String> 只是说明了最近几年Java的发展,在很大程度上没有失去其本质的Java风格。

OT:如果不需要同步,请使用HashMap而不是Hashtable 如果这样做,请使用ConcurrentHashMap (感谢akappa!)。

你有正确的钥匙吗? 使用键从地图中获取值,您便拥有了所有映射。 例如,在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 <String,String>

for( String key : hash.keySet() ) {
    String value = hash.get( key );
}

for( Map.Entry entry : hash.entrySet() ) {
    String key = entry.getKey();
    String value = entry.getValue();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM