Javaのマップに値が存在するかどうかを確認します
この投稿では、Javaのマップに値が存在するかどうかを確認する方法について説明します。価値 value
値へのマッピングが少なくとも1つ含まれている場合、マップに存在します v
そのために Objects.equals(value, v)
保持します。
1.使用する containsValue()
方法
マップに値が存在するかどうかを確認するための標準的なソリューションは、 containsValue()
メソッド。マップが1つ以上のキーを指定された値にマップする場合にtrueを返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<Character, Integer> hashMap = new HashMap<>(); for (int i = 65; i <= 90; i++) { hashMap.put((char) i, i); } int value = 70; boolean isExists = hashMap.containsValue(value); System.out.println(isExists); // true } } |
値がカスタムオブジェクトの場合は、次のことを忘れないでください。 equalsメソッドとhashCodeメソッドをオーバーライドします そのクラスの。
2.使用する anyMatch()
方法
マップに含まれる値のコレクションを取得し、そのコレクションで指定された値を検索するという考え方です。これは、StreamAPIを使用して1行で実行できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<Character, Integer> hashMap = new HashMap<>(); for (int i = 65; i <= 90; i++) { hashMap.put((char) i, i); } int value = 70; boolean isExists = hashMap.values().stream().anyMatch(v -> v == value); System.out.println(isExists); // true } } |
3.forループの使用
Java 8より前では、カスタムルーチンを記述して、値がマップに存在するかどうかを判断できます。実例は次のとおりです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<Character, Integer> hashMap = new HashMap<>(); for (int i = 65; i <= 90; i++) { hashMap.put((char) i, i); } int value = 70; boolean isExists = false; for (Integer v: hashMap.values()) { if (v == value) { isExists = true; break; } } System.out.println(isExists); // true } } |
これで、Javaのマップに値が存在するかどうかを確認できます。
こちらも参照: