7


2

Hashtableのキーと値を列挙するにはどうすればよいですか?

私は問題があります ;私はいくつかのデータを持っているので、たとえば「Hashtable」で表示します。

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

しかし、値とキーを一緒に表示するにはどうすればよいですか? 例えばこれ

キーが「A」で値が「B」の場合、次のように表示されます。

A  B

ありがとう…

3 Answer


18


Hashtable`は Map`を実装します。 Map.entrySet関数は、` Mapのコレクション( Set)を返します。 Entryインスタンス。これには「getKey」メソッドと「getValue」メソッドがあります。

So:

Iterator  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`呼び出しを排除できます。 たとえば、Hashtableが「Hashtable」と宣言されている場合、「entry」は「Map.Entry」と宣言できます。

テンプレートをジェネリックと組み合わせることができる場合、それは実に短いです:

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

これは、「yourTable」が「Hashtable」であることを前提としています。 ここ数年でJavaがどれだけ進歩したかを示すために、主にJavaの本質を失うことはありません。

わずかにOT:同期が不要な場合は、「Hashtable」ではなく「HashMap」を使用します。 その場合、http://java.sun.com/javase/6/docs/api/java/util/concurrent/ConcurrentHashMap.html [ConcurrentHashMap]を使用してください(ありがとう、akappa!)。


8


あなたは鍵を持っていますか? キーを使用してマップから値を取得すると、すべてのマッピングができます。 たとえば、キーのタイプとしてStringを使用するJavaの場合:

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

.


1


entrySet()は、Hashtableの値の列挙を返します。 + keySet()は、Hashtable内のキーの列挙を返します。 + entrySet()は、エントリ(キーと値)をセットとして返します

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