私の理解する限りでは、Enumeration
のキーに対して を直接取得する直接的な方法はないようですHashMap
。 しか取得できませんkeySet()
。 そこから をSet
取得できますが、Iterator
は とIterator
は異なるもののようですEnumeration
。
Enumeration
のキーから を直接取得するための最良かつ最もパフォーマンスの高い方法は何ですかHashMap
?
背景: 私は独自のリソースバンドル(=>getKeys()
メソッド)、すべてのキーの列挙を返すメソッドを提供/実装する必要があります。しかし、私の実装は に基づいているHashMap
ため、これら 2 つの「反復子/列挙子」手法間で最適な変換を行う方法を何らかの方法で見つけ出す必要があります。
ベストアンサー1
この方法を使えばいいと思います列挙からjava.util.コレクションあなたが望むものを達成するためのクラス。
enumerate メソッドの API ドキュメントには次のように書かれています。
パブリック静的列挙列挙(コレクション c)
指定されたコレクションの列挙を返します。これにより、入力として列挙を必要とする従来の API との相互運用性が実現します。
たとえば、以下のコードスニペットは、HashMapのキーセットからEnumerationのインスタンスを取得します。
final Map <String,Integer> test = new HashMap<String,Integer>();
test.put("one",1);
test.put("two",2);
test.put("three",3);
final Enumeration<String> strEnum = Collections.enumeration(test.keySet());
while(strEnum.hasMoreElements()) {
System.out.println(strEnum.nextElement());
}
結果の出力は次のようになります。
1
2
3