14

私はJavaで辞書を持っています:

protected Dictionary<String, Object> objects;

次に、 for ループで get() を使用してキーの値を取得できるように、辞書のキーを取得します。

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

しかし、これはうまくいきません。:( 何か案が?

Thx トーマス

PS: 変数にキーと値の両方が必要です。

4

4 に答える 4

38

まず最初に。クラスはかなりDictionary時代遅れです。Map代わりにa を使用する必要があります。

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 に答える