1. ホーム
  2. java

[解決済み] JavaでHashMapを印刷する

2022-03-04 13:21:38

質問

私は HashMap :

private HashMap<TypeKey, TypeValue> example = new HashMap<TypeKey, TypeValue>();

さて、すべての値を実行して、それらを表示したいと思います。

こう書きました。

for (TypeValue name : this.example.keySet()) {
    System.out.println(name);
}

うまくいかないようです。

何が問題なのでしょうか?

EDIT もう一つ質問です。このコレクションはゼロベースですか?つまり、1つのキーと値を持っている場合、サイズは0または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.entrySet().forEach(entry -> {
    System.out.println(entry.getKey() + " " + entry.getValue());
});


もし、キーの値を表示する必要がなく、ハッシュマップの値だけが必要な場合は、他の人の提案を使用することができます。

<ブロッククオート

もう一つ質問です。このコレクションはゼロベースなのでしょうか?つまり、1つのキーと値を持つ場合、そのサイズは0または1になるのでしょうか?

から返されたコレクションは keySet() Set . インデックスを使ってセットから値を取得することはできないので、ゼロベースかワンベースかは問題ではありません。ハッシュマップのキーが1つの場合は keySet() は、内部に1つのエントリーを持ち、そのサイズは1になります。