私は以下を持っていますHashMap
:
private HashMap<TypeKey, TypeValue> example = new HashMap<TypeKey, TypeValue>();
ここで、すべての値を実行して印刷したいと思います。
私はこう書きました:
for (TypeValue name : this.example.keySet()) {
System.out.println(name);
}
動作しないようです。
何が問題ですか?
編集: 別の質問: このコレクションはゼロベースですか? つまり、キーと値が 1 つある場合、サイズは 0 になりますか、それとも 1 になりますか?
ベストアンサー1
keySet()
ハッシュ マップからキーのセットのみを返すため、このキー セットを反復処理し、これらのキーを使用してハッシュ マップから値を取得する必要があります。
この例では、ハッシュ マップのキーの型は ですTypeKey
が、TypeValue
ジェネリック で を指定したfor-loop
ため、コンパイルできません。次のように変更する必要があります。
for (TypeKey name: example.keySet()) {
String key = name.toString();
String value = example.get(name).toString();
System.out.println(key + " " + value);
}
Java8 のアップデート:
example.forEach((key, value) -> System.out.println(key + " " + value));
キー値を印刷する必要がなく、ハッシュ マップ値のみが必要な場合は、他の人の提案を使用できます。
もう 1 つの質問: このコレクションはゼロベースですか? つまり、キーと値が 1 つある場合、サイズは 0 になりますか、それとも 1 になりますか?
返されるコレクションkeySet()
はSet
インデックスを使用してセットから値を取得することはできないため、ゼロベースか 1 ベースかは問題ではありません。ハッシュ マップにキーが 1 つある場合、keySet()
返される値にはエントリが 1 つ含まれ、そのサイズは 1 になります。