Java のマップ インターフェイス
Java では、マップ インターフェイスは java.util パッケージに存在し、キーと値の間のマッピングを表します。 Java Map インターフェースは、 コレクションインターフェース 。したがって、他のコレクション型とは少し異なる動作をします。マップには一意のキーが含まれています。
オタクの皆さん、ブレインストーミングはこうあるべきだった マップを使用する理由と使用時期。
マップは、辞書などのキーと値の関連付けのマッピングに使用するのに最適です。マップは、キーによる検索を実行するため、またはキーによって要素を取得および更新する場合に使用されます。一般的なシナリオのいくつかは次のとおりです。
- エラー コードとその説明のマップ。
- 郵便番号と都市の地図。
- マネージャーと従業員のマップ。各マネージャー (キー) は、彼が管理する従業員のリスト (値) に関連付けられています。
- クラスと生徒の地図。各クラス (キー) は学生のリスト (値) に関連付けられています。
マップオブジェクトの作成
マップは インターフェース 、タイプ マップのオブジェクトは作成できません。オブジェクトを作成するには、このマップを拡張するクラスが常に必要です。また、導入後は、 ジェネリック Java 1.5 では、Map に格納できるオブジェクトのタイプを制限できます。
構文: タイプセーフマップの定義
Map hm = new HashMap(); // Obj is the type of the object to be stored in Map
マップインターフェイスの特徴
- マップには重複したキーを含めることはできず、各キーは最大 1 つの値にマップできます。一部の実装では HashMap や LinkedHashMap のように null キーと null 値を許可しますが、実装を好まないものもあります。 ツリーマップ 。
- マップの順序は特定の実装によって異なります。例えば、 ツリーマップ と LinkedHashMap には予測可能な順序がありますが、HashMap には予測可能ではありません。
- Java で Map を実装するには 2 つのインターフェイスがあります。これらは Map と SortedMap 、および HashMap、TreeMap、LinkedHashMap の 3 つのクラスです。
Java Mapインターフェースのメソッド
| 方法 | 実行されたアクション |
|---|---|
| クリア() | このメソッドは、指定された Map コレクションからすべての要素またはマッピングをクリアおよび削除するために Java Map Interface で使用されます。 |
| containsKey(オブジェクト) | このメソッドは、特定のキーがマップにマップされているかどうかを確認するために Java のマップ インターフェイスで使用されます。キー要素をパラメータとして受け取り、その要素がマップ内にマップされている場合は True を返します。 |
| containsValue(オブジェクト) | このメソッドは、マップ インターフェイスで特定の値がマップ内の 1 つまたは複数のキーによってマップされているかどうかを確認するために使用されます。値をパラメータとして受け取り、その値がマップ内のいずれかのキーにマップされている場合は True を返します。 |
| エントリーセット() | このメソッドは、マップに含まれる同じ要素からセットを作成するために Java のマップ インターフェイスで使用されます。基本的にはマップのセット ビューを返すか、新しいセットを作成してそこにマップ要素を保存することができます。 |
| 等しい(オブジェクト) | このメソッドは、Java Map Interface で 2 つのマップ間の同等性をチェックするために使用されます。パラメータとして渡された 1 つのマップの要素が、このマップの要素と等しいかどうかを検証します。 |
| get(オブジェクト) | このメソッドは、パラメータで指定された特定のキーによってマップされた値を取得またはフェッチするために使用されます。マップにキーのそのようなマッピングが含まれていない場合は、NULL を返します。 |
| ハッシュコード() | このメソッドは、キーと値を含む指定されたマップのハッシュコードを生成するためにマップ インターフェイスで使用されます。 |
| isEmpty() | このメソッドは、マップにキーと値のペアのエントリがあるかどうかを確認するために使用されます。マッピングが存在しない場合、これは true を返します。 |
| キーセット() | このメソッドは、マップ インターフェイスで使用され、このマップに含まれるキーの Set ビューを返します。セットはマップに基づいているため、マップへの変更はセットに反映され、その逆も同様です。 |
| put(オブジェクト, オブジェクト) | このメソッドは、指定された値をこのマップ内の指定されたキーに関連付けるために Java Map Interface で使用されます。 |
| putAll(マップ) | このメソッドは、指定されたマップからこのマップにすべてのマッピングをコピーするために Java のマップ インターフェイスで使用されます。 |
| 削除(オブジェクト) | このメソッドは、マップ内にキーが存在する場合、このマップからキーのマッピングを削除するためにマップ インターフェイスで使用されます。 |
| サイズ() | このメソッドは、マップ内で使用可能なキーと値のペアの数を返すために使用されます。 |
| 値() | このメソッドは、マップの値からコレクションを作成するために Java Map Interface で使用されます。基本的に、HashMap 内の値のコレクション ビューを返します。 |
| getOrDefault(オブジェクトキー, VdefaultValue) | 指定されたキーがマップされている値を返します。このマップにキーのマッピングが含まれていない場合は、defaultValue を返します。 |
| merge(Kキー、V値、BiFunctionリマッピング関数) | 指定されたキーがまだ値に関連付けられていない場合、または null に関連付けられている場合は、指定された非 null 値に関連付けます。 |
| putIfAbsent(K キー、V 値) | 指定されたキーがまだ値に関連付けられていない (または null にマップされている) 場合は、そのキーを指定された値に関連付けて null を返し、それ以外の場合は現在の関連付けられた値を返します。 |
例:
ジャワ
// Java Program to Demonstrate> // Working of Map interface> > // Importing required classes> import> java.util.*;> > // Main class> class> GFG {> > > // Main driver method> > public> static> void> main(String args[])> > {> > // Creating an empty HashMap> > Map hm> > => new> HashMap();> > > // Inserting pairs in above Map> > // using put() method> > hm.put(> 'a'> ,> new> Integer(> 100> ));> > hm.put(> 'b'> ,> new> Integer(> 200> ));> > hm.put(> 'c'> ,> new> Integer(> 300> ));> > hm.put(> 'd'> ,> new> Integer(> 400> ));> > > // Traversing through Map using for-each loop> > for> (Map.Entry me :> > hm.entrySet()) {> > > // Printing keys> > System.out.print(me.getKey() +> ':'> );> > System.out.println(me.getValue());> > }> > }> }> |
出力:
a:100 b:200 c:300 d:400
Map インターフェイスを実装するクラスは、以下のメディアに示されており、後で次のように説明されます。
1.ハッシュマップ
ハッシュマップ Java 1.2 以降の Java コレクションの一部です。 Java の Map インターフェイスの基本的な実装を提供します。データは (キー、値) ペアで保存されます。値にアクセスするには、そのキーを知っている必要があります。このクラスは Java と呼ばれる技術を使用します。
// Java Program to illustrate the Hashmap Class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > > // Main driver method> > public> static> void> main(String[] args)> > {> > > // Creating an empty HashMap> > Map map => new> HashMap();> > > // Inserting entries in the Map> > // using put() method> > map.put(> 'vishal'> ,> 10> );> > map.put(> 'sachin'> ,> 30> );> > map.put(> 'vaibhav'> ,> 20> );> > > // Iterating over Map> > for> (Map.Entry e : map.entrySet())> > > // Printing key-value pairs> > System.out.println(e.getKey() +> ' '> > + e.getValue());> > }> }> |
出力
vaibhav 20 vishal 10 sachin 30
2.リンクされたハッシュマップ
LinkedHashMap は、HashMap に挿入された要素の順序を維持する追加機能を備えたものとまったく同じです。 HashMap には、迅速な挿入、検索、削除という利点がありましたが、挿入順序で要素にアクセスできる LinkedHashMap が提供する挿入のトラックと順序は維持されませんでした。このクラスを使用してマップ オブジェクトを作成する方法を見てみましょう。
例
ジャワ
// Java Program to Illustrate the LinkedHashmap Class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > > // Main driver method> > public> static> void> main(String[] args)> > {> > > // Creating an empty LinkedHashMap> > Map map => new> LinkedHashMap();> > > // Inserting pair entries in above Map> > // using put() method> > map.put(> 'vishal'> ,> 10> );> > map.put(> 'sachin'> ,> 30> );> > map.put(> 'vaibhav'> ,> 20> );> > > // Iterating over Map> > for> (Map.Entry e : map.entrySet())> > > // Printing key-value pairs> > System.out.println(e.getKey() +> ' '> > + e.getValue());> > }> }> |
出力
vishal 10 sachin 30 vaibhav 20
3. ツリーマップ
の Javaのツリーマップ Map インターフェイスと NavigableMap を Abstract クラスとともに実装するために使用されます。マップは、使用されるコンストラクターに応じて、キーの自然な順序に従って、またはマップ作成時に提供される Comparator によってソートされます。これは、キーと値のペアを並べ替えて保存する効率的な方法であることがわかります。ツリーマップによって維持される格納順序は、明示的なコンパレータに関係なく、他の並べ替えられたマップと同様に、equals と一致する必要があります。このクラスを使用してマップ オブジェクトを作成する方法を見てみましょう。
例
ジャワ
// Java Program to Illustrate TreeMap Class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > > // Main driver method> > public> static> void> main(String[] args)> > {> > > // Creating an empty TreeMap> > Map map => new> TreeMap();> > > // Inserting custom elements in the Map> > // using put() method> > map.put(> 'vishal'> ,> 10> );> > map.put(> 'sachin'> ,> 30> );> > map.put(> 'vaibhav'> ,> 20> );> > > // Iterating over Map using for each loop> > for> (Map.Entry e : map.entrySet())> > > // Printing key-value pairs> > System.out.println(e.getKey() +> ' '> > + e.getValue());> > }> }> |
出力
sachin 30 vaibhav 20 vishal 10
を使用して操作を実行する マップインターフェイス そして ハッシュマップクラス
Map はインターフェースであるため、このインターフェースを実装したクラスでのみ使用できます。次に、広く使用されているメソッドを使用して、マップ上で頻繁に使用されるいくつかの操作を実行する方法を見てみましょう。 ハッシュマップクラス 。また、導入後は、 ジェネリック Java 1.5 では、マップに格納できるオブジェクトのタイプを制限できるようになりました。
1. 要素の追加
マップに要素を追加するには、 put() メソッドを使用します。ただし、挿入順序はハッシュマップには保持されません。内部的には、要素ごとに個別のハッシュが生成され、効率を高めるためにこのハッシュに基づいて要素にインデックスが付けられます。
例
ジャワ
// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> > public> static> void> main(String args[])> > {> > // Default Initialization of a> > // Map> > Map hm1 => new> HashMap();> > > // Initialization of a Map> > // using Generics> > Map hm2> > => new> HashMap();> > > // Inserting the Elements> > hm1.put(> 1> ,> 'Geeks'> );> > hm1.put(> 2> ,> 'For'> );> > hm1.put(> 3> ,> 'Geeks'> );> > > hm2.put(> new> Integer(> 1> ),> 'Geeks'> );> > hm2.put(> new> Integer(> 2> ),> 'For'> );> > hm2.put(> new> Integer(> 3> ),> 'Geeks'> );> > > System.out.println(hm1);> > System.out.println(hm2);> > }> }> |
出力
{1=Geeks, 2=For, 3=Geeks} {1=Geeks, 2=For, 3=Geeks} 2. 要素の変更
要素を追加した後、要素を変更したい場合は、put() メソッドを使用して要素を再度追加することで実行できます。マップ内の要素はキーを使用してインデックス付けされるため、変更したいキーの更新された値を挿入するだけでキーの値を変更できます。
例
ジャワ
// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> > public> static> void> main(String args[])> > {> > > // Initialization of a Map> > // using Generics> > Map hm1> > => new> HashMap();> > > // Inserting the Elements> > hm1.put(> new> Integer(> 1> ),> 'Geeks'> );> > hm1.put(> new> Integer(> 2> ),> 'Geeks'> );> > hm1.put(> new> Integer(> 3> ),> 'Geeks'> );> > > System.out.println(> 'Initial Map '> + hm1);> > > hm1.put(> new> Integer(> 2> ),> 'For'> );> > > System.out.println(> 'Updated Map '> + hm1);> > }> }> |
出力
Initial Map {1=Geeks, 2=Geeks, 3=Geeks} Updated Map {1=Geeks, 2=For, 3=Geeks} 3. 要素の削除
Map から要素を削除するには、remove() メソッドを使用します。このメソッドはキー値を取得し、マップ内にキーが存在する場合はこのマップからキーのマッピングを削除します。
例
ジャワ
// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> > > public> static> void> main(String args[])> > {> > > // Initialization of a Map> > // using Generics> > Map hm1> > => new> HashMap();> > > // Inserting the Elements> > hm1.put(> new> Integer(> 1> ),> 'Geeks'> );> > hm1.put(> new> Integer(> 2> ),> 'For'> );> > hm1.put(> new> Integer(> 3> ),> 'Geeks'> );> > hm1.put(> new> Integer(> 4> ),> 'For'> );> > > // Initial Map> > System.out.println(hm1);> > > hm1.remove(> new> Integer(> 4> ));> > > // Final Map> > System.out.println(hm1);> > }> }> |
出力
{1=Geeks, 2=For, 3=Geeks, 4=For} {1=Geeks, 2=For, 3=Geeks} 4. マップを反復処理する
マップを反復処理するには複数の方法があります。最も有名な方法は、for-each ループを使用してキーを取得することです。キーの値は、getValue() メソッドを使用して検索されます。
例
ジャワ
// Java program to demonstrate> // the working of Map interface> > import> java.util.*;> class> GFG {> > public> static> void> main(String args[])> > {> > > // Initialization of a Map> > // using Generics> > Map hm1> > => new> HashMap();> > > // Inserting the Elements> > hm1.put(> new> Integer(> 1> ),> 'Geeks'> );> > hm1.put(> new> Integer(> 2> ),> 'For'> );> > hm1.put(> new> Integer(> 3> ),> 'Geeks'> );> > > for> (Map.Entry mapElement : hm1.entrySet()) {> > int> key = (> int> )mapElement.getKey();> > > // Finding the value> > String value = (String)mapElement.getValue();> > > System.out.println(key +> ' : '> + value);> > }> > }> }> |
出力
1 : Geeks 2 : For 3 : Geeks
5. ハッシュマップを使用して数値の出現をカウントする
このコードでは、 putIfAbsent( ) とともに コレクション.frequency() 数字の出現を正確に数えます。多くのプログラムでは、特定の数字または文字の出現をカウントする必要があります。このようなタイプの問題を解決するには、次のアプローチを使用します。
ジャワ
// Java program to Count the Occurrence> // of numbers using Hashmap> import> java.util.*;> > class> HelloWorld {> > public> static> void> main(String[] args)> > {> > int> a[] = {> 1> ,> 13> ,> 4> ,> 1> ,> 41> ,> 31> ,> 31> ,> 4> ,> 13> ,> 2> };> > > // put all elements in arraylist> > ArrayList aa => new> ArrayList();> > for> (> int> i => 0> ; i aa.add(a[i]); } HashMap h = new HashMap(); // counting occurrence of numbers for (int i = 0; i h.putIfAbsent(aa.get(i), Collections.frequency( aa, aa.get(i))); } System.out.println(h); } }> |
出力
{1=2, 2=1, 4=2, 41=1, 13=2, 31=2} Java マップ インターフェイスの FAQ
Q1. Java のマップ インターフェイスとは何ですか?
答え:
マップにはキーと値のペアが含まれており、キー値を使用してマップ内の要素にアクセスします。
Q2. Java のマップ インターフェイスにはどのような種類がありますか?
答え:
HashMap、LinkedHashMap、TreeMap の 3 つのマップ インターフェイス実装があります。