キーがマップに存在するかどうかを確認する方法

1。概要

この簡単なチュートリアルでは、キーがマップに存在するかどうかを確認する方法を見ていきます。

具体的には、containsKeygetに焦点を当てます。

2.のcontainsKey

Map#containsKeyのJavaDocを見ると:

このマップに指定されたキーのマッピングが含まれている場合はtrueを返します

この方法は、私たちがやりたいことを行うためのかなり良い候補であることがわかります。

非常に単純なマップを作成し、containsKeyを使用してその内容を確認しましょう。

@Test public void whenKeyIsPresent_thenContainsKeyReturnsTrue() { Map map = Collections.singletonMap("key", "value"); assertTrue(map.containsKey("key")); assertFalse(map.containsKey("missing")); }

簡単に言えば、containsKeyは、マップにそのキーが含まれているかどうかを示します。

3.取得する

現在、getも機能する場合がありますが、Map実装がnull値をサポートしているかどうかに応じて、いくつかの手荷物が付属しています。

繰り返しになりますが、MapのJavaDocを見てみましょう。今回はMap#putの場合、NullPointerExceptionのみがスローされることがわかります。

指定されたキーまたは値がnullであり、このマップがnullキーまたは値を許可しない場合

Mapの一部の実装はnull値を持つ可能性があるため(HashMapなど)、キーが存在していてもgetnullを返す可能性があります。

したがって、キーに値があるかどうかを確認することが目標である場合、getは機能します。

@Test public void whenKeyHasNullValue_thenGetStillWorks() { Map map = Collections.singletonMap("nothing", null); assertTrue(map.containsKey("nothing")); assertNull(map.get("nothing")); }

ただし、キーが存在することを確認しようとしているだけの場合は、containsKeyを使用する必要があります

4.結論

この記事では、containsKeyについて説明しました。また、キーの存在を確認するためにgetを使用することが危険である理由についても詳しく調べました。

いつものように、Githubでコード例を確認してください。