Java のマップインターフェイス keySet()、values()、entrySet() メソッド
この記事では、3 つの方法について説明します。 keySet()
, values()
、 と entrySet()
の Map
Javaのインターフェース。これらのメソッドは、キーのセット、値のコレクション、またはキーと値のマッピングのセットを Map
、 それぞれ。
1. 概要 keySet()
, values()
、 と entrySet()
メソッド
The java.util.Map
インターフェイスは3つの方法を提供します keySet()
, values()
、 と entrySet()
を使用すると、マップのコンテンツをそれぞれキーのセット、値のコレクション、またはキーと値のマッピングのセットとして表示できます。の Map
これらのメソッドによって返されたコレクションをバックアップするため、 Map
コレクションに反映され、その逆も同様です。
これらのメソッドの構文と戻り値の型を見てみましょう。
- The keySet() メソッドは
Set
に含まれるキーのビューMap
。このメソッドはパラメータをとらず、戻り値の型を持ちます。Set<K>
、 どこK
のキーのタイプです。Map
. - The
values()
メソッドはCollection
に含まれる値のビューMap
。このメソッドはパラメータをとらず、戻り値の型を持ちます。Collection<V>
、 どこV
の値のタイプです。Map
. - The entrySet() メソッドは
Set
に含まれるキーと値のマッピングのビューMap
。このメソッドはパラメータをとらず、戻り値の型を持ちます。Set<Map.Entry<K,V>>
、 どこK
はキーの種類であり、V
の値のタイプです。Map
.Map.Entry
キーと値のペアを表すインターフェイスです。
HashMap でこれらのメソッドを作成して使用する方法の例を見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; class Main { public static void main(String[] args) { // HashMap を作成して初期化する HashMap<String, Integer> map = new HashMap<>(); map.put("one", 1); map.put("two", 2); map.put("three", 3); // マップから keySet を取得します Set<String> keys = map.keySet(); // keySet を出力します System.out.println("Keys: " + keys); // [1 2 3] // マップから値を取得します Collection<Integer> values = map.values(); // 値を出力します System.out.println("Values: " + values); // [1, 2, 3] // マップからentrySetを取得します Set<Map.Entry<String, Integer>> entries = map.entrySet(); // エントリセットを出力します System.out.println("Entries: " + entries); // [1 つ = 1、2 つ = 2、3 つ = 3] } } |
2. 両者の違い keySet()
, values()
、 と entrySet()
メソッド
の機能 keySet()
, values()
、 と entrySet()
方法は似ています。それらはすべて、ある側面のコレクション ビューを返します。 Map
。ただし、これらには、理解する必要があるいくつかの違いとトレードオフもあります。
- The
keySet()
メソッドは、その中に存在するすべてのキーの Set ビューを返します。Map
つまり、キーのセットを返します。のvalues()
メソッドは、内に存在するすべての値のコレクション ビューを返します。Map
つまり、値のコレクションを返します。のentrySet()
メソッドは、内に存在するすべてのマッピングの Set ビューを返します。Map
つまり、キーと値のペアのセットを返します。 - The
keySet()
メソッドを使用して マップ内のすべてのキーを反復処理します。 各キーに基づいてアクションを実行します。のvalues()
メソッドを使用して、内のすべての値を反復処理できます。Map
それぞれの値に基づいてアクションを実行します。のentrySet()
メソッドを使用して マップ内のすべてのエントリを反復処理します。 各キーと値のペアに基づいてアクションを実行します。 - The
keySet()
このメソッドでは、セット内の重複キーは許可されません。Map
重複キーは許可されません。のvalues()
このメソッドでは、コレクション内の重複値が許可されます。Map
重複した値を許可します。のentrySet()
このメソッドでは、セット内の重複エントリは許可されません。Map
重複したエントリは許可されません。
3.使用方法 keySet()
, values()
、 と entrySet()
正しいメソッド
これらのメソッドを正しく使用する方法に関する一般的な推奨事項をいくつか示します。
- 使用する
keySet()
のキーにアクセスまたは変更するだけでよい場合は、このメソッドを使用します。Map
値やエントリは気にしません。たとえば、次のように使用できます。keySet()
キーが存在するかどうかを確認するメソッドMap
、からキーを削除するには、Map
、または内のすべてのキーを反復処理します。Map
. - 使用する
values()
の値にアクセスまたは変更するだけでよい場合は、メソッドを使用します。Map
キーやエントリは気にしません。たとえば、次のように使用できます。values()
値が存在するかどうかを確認するメソッドMap
から値を削除するには、Map
、または内のすべての値を反復処理します。Map
. - 使用する
entrySet()
のキーと値の両方にアクセスまたは変更する必要がある場合は、メソッドを使用します。Map
、または、エントリにアクセスまたは変更する必要がある場合Map
。たとえば、次のように使用できます。entrySet()
エントリが存在するかどうかを確認するメソッドMap
からエントリを削除するには、Map
、または内のすべてのエントリを反復処理します。Map
.
以上がすべてです keySet()
, values()
と entrySet()
Javaのメソッド。