14

我在java中有一本字典:

protected Dictionary<String, Object> objects;

现在我想获取字典的键,这样我就可以在 for 循环中使用 get() 获取键的值:

for (final String key : this.objects) {
    final Object value = this.objects.get(key);

但这不起作用。:( 任何想法?

谢谢托马斯

PS:我需要变量中的键和值。

4

4 回答 4

38

第一件事。Dictionary课程已经过时了。您应该使用 aMap代替:

protected Map<String, Object> objects = new HashMap<String, Object>();

一旦解决了,我想这就是你的意思:

for (String key : objects.keySet()) {
    // use the key here
}

如果您打算遍历键和值,最好这样做:

for (Map.Entry<String, Object> entry : objects.entrySet()) {
    String key = entry.getKey();
    Object val = entry.getValue();
}
于 2013-08-16T19:06:31.403 回答
9

如果您必须使用字典(例如 osgi felix 框架 ManagedService),那么以下工作..

public void updated(Dictionary<String, ?> dictionary) 
    throws ConfigurationException {

    if(dictionary == null) {
        System.out.println("dict is null");
    } else {
        Enumeration<String> e = dictionary.keys();
        while(e.hasMoreElements()) {
            String k = e.nextElement();
            System.out.println(k + ": " + dictionary.get(k));
        }
    }
}
于 2015-08-11T19:43:56.807 回答
2

java.util.Map是字典等价的,下面是一个关于如何遍历每个条目的示例

Map<String, Object> map = new HashMap<String, Object>();
//...

for ( String key : map.keySet() ) {
}

for ( Object value : map.values() ) {
}

for ( Map.Entry<String, Object> entry : map.entrySet() ) {
    String key = entry.getKey();
    Object value = entry.getValue();
}
于 2013-08-16T19:07:29.387 回答
1

您可以将值作为

for(final String key : this.objects.keys()){
  final Object value = this.objects.get(key);
}
于 2013-08-16T19:06:07.973 回答