【Java】Mapの値からキーを取得する方法

【Java】Mapの値からキーを取得する方法

管理人
この記事ではJavaのMapの値からキーを取得する方法を紹介します。

 まず、JavaのMapにキー値指定して値を取り出すにはgetメソッドを使用することで可能です。

get(キー値) Mapのキー値に対応する値を取得する
Map<String, String> map = new HashMap<>();
map.put("キー値1", "値1");
map.put("キー値2", "値2");
System.out.println(map);
System.out.println(map.get("キー値1"));
System.out.println(map.get("キー値2"));

//実行結果 
{キー値1=値1, キー値2=値2}
値1
値2

【Java】Mapのgetの動作確認(存在する場合はキー値に対応する値、存在しない場合はnull)

 

 一方で、値に対応するキー値を取得するメソッドはないです。なぜならキー値は重複を許さないが、値は重複し得るため、一つの値に紐づくキー値は複数というパターンがあり得るからです。

 逆に言えば、値が重複しない前提であれば、Mapのキー値と値を逆転させたMapを作成することで、getメソッドを使用し、値からキー値を取り出すことが可能になります。※なお重複する場合は後勝ちです。

Map<String, String> map = new HashMap<>();
map.put("キー値1", "値1");
map.put("キー値2", "値2");
System.out.println(map);
Map<String, String> 反転map = new HashMap<String, String>();
for (Map.Entry<String, String> entry : map.entrySet()) {
反転map.put(entry.getValue(), entry.getKey());
}
System.out.println(反転map);
System.out.println(反転map.get("値1"));
System.out.println(反転map.get("値2"));

// 実行結果
{キー値1=値1, キー値2=値2}
{値1=キー値1, 値2=キー値2}
キー値1
キー値2

for (Map.Entry<String, String> entry : map.entrySet())にてMapの要素を順に読込、entry.getKey()はキー値、getValue()は値を取り出します。

格納用のマップのキー値にentry.getValue()で値、値にentry.getKey()のキー値をセットすることで、キー値と値が逆転したMapを作成することができます。

 なお、キー値が重複する場合は後勝ちです。

 キー値と値が逆転したMapからgetメソッドで取得を行うことで、値に紐づくキー値を取得することができます。

管理人
Javaの記事の一覧はJava にまとめてあります

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

PAGE TOP