単一のユニットとして表現される個々のオブジェクトのグループは、オブジェクトの Java コレクションとして知られています。 Java では、 収集フレームワーク は JDK 1.2 で定義されており、その中にすべての Java コレクション クラスとインターフェイスが含まれています。
Java では、コレクション インターフェイス ( java.util.コレクション ) およびマップ インターフェイス ( java.util.Map ) は、Java コレクション クラスの 2 つの主要なルート インターフェイスです。
Java コレクションで何を学ぶべきですか?
- リストインターフェース
- キューインターフェイス
- ブロッキングキューインターフェイス
- AbstractQueueクラス
- PriorityQueueクラス
- PriorityBlockingQueue クラス
- ConcurrentLinkedQueue クラス
- ArrayBlockingQueue クラス
- DelayQueueクラス
- LinkedBlockingQueue クラス
- リンクされた転送キュー
- そしてインターフェース
- BlockingDeque インターフェース
- ConcurrentLinkedDeque クラス
- ArrayDeque クラス
- インターフェースの設定
- 抽象セットクラス
- CopyOnWriteArraySet クラス
- EnumSet クラス
- ConcurrentHashMap クラス
- ハッシュセットクラス
- LinkedHashSet クラス
- ソートセットインターフェイス
- NavigableSet インターフェイス
- ツリーセット
- ConcurrentSkipListSet クラス
- マップインターフェイス
- ソートマップインターフェイス
- NavigableMap インターフェイス
- コンカレントマップインターフェイス
- ツリーマップクラス
- AbstractMap クラス
- ConcurrentHashMap クラス
- EnumMap クラス
- ハッシュマップクラス
- IdentityHashMap クラス
- LinkedHashMap クラス
- ハッシュテーブルクラス
- プロパティクラス
- その他の重要な概念
- HashMap を ArrayList に変換する方法
- リストからアイテムをランダムに選択します
- コレクションのすべての項目を ArrayList に追加する方法
- Java マップのリストへの変換
- 配列から ArrayList への変換
- ArrayList から配列への変換
- Array と ArrayList の違い
Javaのフレームワークとは何ですか?
フレームワークは、既製のアーキテクチャを提供するクラスとインターフェイスのセットです。新しい機能やクラスを実装するために、フレームワークを定義する必要はありません。ただし、最適なオブジェクト指向設計には、すべてのクラスが同じ種類のタスクを実行するように、クラスのコレクションを備えたフレームワークが常に含まれています。
Java での個別のコレクション フレームワークの必要性
Collection Framework が導入される前 (または JDK 1.2 より前)、Java オブジェクト (またはコレクション) をグループ化するための標準メソッドは次のとおりでした。 配列 または ベクトル 、 または ハッシュテーブル 。これらすべてのコレクションには共通のインターフェイスがありませんでした。したがって、すべてのコレクションの主な目的は同じですが、これらすべてのコレクションの実装は独立して定義されており、コレクション間に相関関係はありません。また、ユーザーがさまざまな機能をすべて覚えるのは非常に困難です。 メソッド 、構文、および コンストラクター すべてのコレクション クラスに存在します。
ハッシュテーブルとベクターに要素を追加する例でこれを理解しましょう。
例:
ジャワ
// Java program to demonstrate> // why collection framework was needed> import> java.io.*;> import> java.util.*;> class> CollectionDemo {> > public> static> void> main(String[] args)> > {> > // Creating instances of the array,> > // vector and hashtable> > int> arr[] => new> int> [] {> 1> ,> 2> ,> 3> ,> 4> };> > Vector v => new> Vector();> > Hashtable h => new> Hashtable();> > // Adding the elements into the> > // vector> > v.addElement(> 1> );> > v.addElement(> 2> );> > // Adding the element into the> > // hashtable> > h.put(> 1> ,> 'geeks'> );> > h.put(> 2> ,> '4geeks'> );> > // Array instance creation requires [],> > // while Vector and hastable require ()> > // Vector element insertion requires addElement(),> > // but hashtable element insertion requires put()> > // Accessing the first element of the> > // array, vector and hashtable> > System.out.println(arr[> 0> ]);> > System.out.println(v.elementAt(> 0> ));> > System.out.println(h.get(> 1> ));> > // Array elements are accessed using [],> > // vector elements using elementAt()> > // and hashtable elements using get()> > }> }> |
>
>出力
1 1 geeks>
ご覧のとおり、これらのコレクション (配列、ベクトル、ハッシュテーブル) はいずれも標準のメンバー アクセス インターフェイスを実装していないため、プログラマーがあらゆる種類のコレクションで機能するアルゴリズムを作成するのは非常に困難でした。もう 1 つの欠点は、ほとんどの「Vector」メソッドが Final であることです。つまり、「Vector」クラスを拡張して同様の種類のコレクションを実装することはできません。したがって、Java 開発者は、上記の問題に対処する共通のインターフェイスを考案することを決定し、従来のベクターとハッシュテーブルの両方がコレクション フレームワークに準拠するように変更された JDK 1.2 ポストにコレクション フレームワークを導入しました。
Java コレクション フレームワークの利点
収集フレームワークの欠如により上記の一連の欠点が生じたため、収集フレームワークの利点は次のとおりです。
- 一貫した API: API には、次のような基本的なインターフェイスのセットがあります。 コレクション 、 セット 、 リスト 、 または 地図 、これらのインターフェイスを実装するすべてのクラス (ArrayList、LinkedList、Vector など) には いくつかの 共通のメソッドのセット。
- プログラミングの労力を軽減します。 プログラマーはコレクションのデザインについて心配する必要はなく、プログラム内でコレクションを最大限に活用することに集中できます。したがって、オブジェクト指向プログラミング (すなわち) 抽象化の基本概念は正常に実装されています。
- プログラムの速度と品質が向上します。 この場合、プログラマは特定のデータ構造の最適な実装を考える必要がないため、有用なデータ構造とアルゴリズムの高性能実装を提供することでパフォーマンスが向上します。最適な実装を使用するだけで、アルゴリズム/プログラムのパフォーマンスを大幅に向上させることができます。
Java のコレクション フレームワークの階層
ユーティリティ パッケージ (java.util) には、コレクション フレームワークに必要なすべてのクラスとインターフェイスが含まれています。コレクション フレームワークには、すべてのコレクションを反復処理するための反復子を提供する反復可能インターフェイスという名前のインターフェイスが含まれています。このインターフェイスは、コレクション フレームワークのルートとして機能するメイン コレクション インターフェイスによって拡張されます。すべてのコレクションはこのコレクション インターフェイスを拡張し、それによってイテレータのプロパティとこのインターフェイスのメソッドを拡張します。次の図は、コレクション フレームワークの階層を示しています。
Javaは文字列をintに変換します
上記のフレームワークのさまざまなコンポーネントを理解する前に、まずクラスとインターフェイスについて理解しましょう。
- クラス : クラスは、オブジェクトの作成元となるユーザー定義のブループリントまたはプロトタイプです。これは、1 つのタイプのすべてのオブジェクトに共通するプロパティまたはメソッドのセットを表します。
- インターフェース : クラスと同様に、インターフェイスにはメソッドと変数を含めることができますが、インターフェイス内で宣言されたメソッドは、デフォルトでは抽象メソッドです (メソッド シグネチャのみで、何もありません)。インターフェイスは、クラスがどのように実行するかではなく、何を実行する必要があるかを指定します。それはクラスの設計図です。
コレクションインターフェイスのメソッド
このインターフェイスには、このインターフェイスを実装するすべてのコレクションで直接使用できるさまざまなメソッドが含まれています。彼らです:
方法 | 説明 |
---|---|
追加(オブジェクト) | このメソッドは、コレクションにオブジェクトを追加するために使用されます。 |
addAll(コレクションc) | このメソッドは、指定されたコレクション内のすべての要素をこのコレクションに追加します。 |
クリア() | このメソッドは、このコレクションからすべての要素を削除します。 |
contains(オブジェクト o) | このメソッドは、コレクションに指定された要素が含まれている場合に true を返します。 |
すべてを含む(コレクション c) | このメソッドは、コレクションに指定されたコレクション内のすべての要素が含まれている場合に true を返します。 |
等しい(オブジェクト o) | このメソッドは、指定されたオブジェクトとこのコレクションが等しいかどうかを比較します。 |
ハッシュコード() | このメソッドは、このコレクションのハッシュ コード値を返すために使用されます。 |
isEmpty() | このコレクションに要素が含まれていない場合、このメソッドは true を返します。 |
イテレータ() | このメソッドは、このコレクション内の要素に対する反復子を返します。 |
最大() | このメソッドは、コレクション内に存在する最大値を返すために使用されます。 |
パラレルストリーム() | このメソッドは、このコレクションをソースとして持つ並列ストリームを返します。 |
削除(オブジェクトo) | このメソッドは、コレクションから指定されたオブジェクトを削除するために使用されます。重複する値がある場合、このメソッドは最初に出現したオブジェクトを削除します。 |
すべて削除(コレクション c) | このメソッドは、指定されたコレクションで言及されているすべてのオブジェクトをコレクションから削除するために使用されます。 |
RemoveIf(述語フィルター) | このメソッドは、指定された条件を満たすこのコレクションのすべての要素を削除するために使用されます。 述語 。 |
全て保持(コレクションc) | このメソッドは、指定されたコレクションに含まれるこのコレクション内の要素のみを保持するために使用されます。 |
サイズ() | このメソッドは、コレクション内の要素の数を返すために使用されます。 |
スプリッテレータ() | このメソッドは、 スプリッテレーター このコレクション内の要素について説明します。 |
ストリーム() | このメソッドは、このコレクションをソースとして含む連続した Stream を返すために使用されます。 |
toArray() | このメソッドは、このコレクション内のすべての要素を含む配列を返すために使用されます。 |
Java コレクション インターフェイスを拡張するインターフェイス
コレクション フレームワークには複数のインターフェイスが含まれており、すべてのインターフェイスは特定の種類のデータを保存するために使用されます。以下は、フレームワークに存在するインターフェイスです。
1. 反復可能なインターフェース
これは、コレクション フレームワーク全体のルート インターフェイスです。コレクション インターフェイスは反復可能インターフェイスを拡張します。したがって、本質的に、すべてのインターフェイスとクラスはこのインターフェイスを実装します。このインターフェイスの主な機能は、コレクションにイテレータを提供することです。したがって、このインターフェイスにはイテレータである抽象メソッドが 1 つだけ含まれています。返されるのは、
Iterator iterator();>
2. 収集インターフェース
このインターフェイスは反復可能インターフェイスを拡張し、コレクション フレームワーク内のすべてのクラスによって実装されます。このインターフェイスには、コレクションへのデータの追加、データの削除、データのクリアなど、すべてのコレクションが持つ基本的なメソッドがすべて含まれています。これらのメソッドはすべて、スタイルに関係なくすべてのクラスによって実装されるため、このインターフェイスに実装されます。実装の。また、このインターフェイスにこれらのメソッドを含めることで、メソッドの名前がすべてのコレクションに共通であることが保証されます。したがって、簡単に言うと、このインターフェイスはコレクション クラスが実装される基盤を構築すると言えます。
3. リストインターフェース
これは、コレクション インターフェイスの子インターフェイスです。このインターフェイスは、オブジェクトの順序付けられたコレクションをすべて保存できるリスト タイプのデータ専用です。これにより、重複データが存在することも可能になります。このリスト インターフェイスは、ArrayList、Vector、Stack などのさまざまなクラスによって実装されます。すべてのサブクラスがリストを実装するため、これらのクラスのいずれかを使用してリスト オブジェクトをインスタンス化できます。
例えば:
List al = new ArrayList (); List ll = new LinkedList (); List v = new Vector (); Where T is the type of the object>
List インターフェースを実装するクラスは次のとおりです。
私)。 配列リスト
ArrayList は Java の動的配列を提供します。ただし、標準の配列よりも遅い場合がありますが、配列内で大量の操作が必要なプログラムでは役立ちます。オブジェクトがコレクションから削除されてコレクションが拡大または縮小すると、ArrayList のサイズは自動的に増加します。 Java ArrayList を使用すると、リストにランダムにアクセスできます。 ArrayList は使用できません ラッパークラス このような場合に。
次の例で ArrayList を理解しましょう。
ジャワ
// Java program to demonstrate the> // working of ArrayList> import> java.io.*;> import> java.util.*;> class> GFG {> > // Main Method> > public> static> void> main(String[] args)> > {> > // Declaring the ArrayList with> > // initial size n> > ArrayList al => new> ArrayList();> > // Appending new elements at> > // the end of the list> > for> (> int> i => 1> ; i <=> 5> ; i++)> > al.add(i);> > // Printing elements> > System.out.println(al);> > // Remove element at index 3> > al.remove(> 3> );> > // Displaying the ArrayList> > // after deletion> > System.out.println(al);> > // Printing elements one by one> > for> (> int> i => 0> ; i System.out.print(al.get(i) + ' '); } }> |
>
Javaのタイプ
>出力
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>
ii)。 リンクリスト
LinkedList クラスは、 次の例で LinkedList を理解しましょう。
ジャワ
// Java program to demonstrate the> // working of LinkedList> import> java.io.*;> import> java.util.*;> class> GFG {> > // Main Method> > public> static> void> main(String[] args)> > {> > // Declaring the LinkedList> > LinkedList ll => new> LinkedList();> > // Appending new elements at> > // the end of the list> > for> (> int> i => 1> ; i <=> 5> ; i++)> > ll.add(i);> > // Printing elements> > System.out.println(ll);> > // Remove element at index 3> > ll.remove(> 3> );> > // Displaying the List> > // after deletion> > System.out.println(ll);> > // Printing elements one by one> > for> (> int> i => 0> ; i System.out.print(ll.get(i) + ' '); } }> |
>
>出力
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>
iii)。 ベクター
ベクトルは Java の動的配列を提供します。ただし、標準の配列よりも遅い場合がありますが、配列内で大量の操作が必要なプログラムでは役立ちます。これは実装の点では ArrayList と同じです。ただし、Vector と ArrayList の主な違いは、Vector は同期されているのに対し、ArrayList は非同期であることです。
例を挙げてベクトルを理解しましょう。
ジャワ
// Java program to demonstrate the> // working of Vector> import> java.io.*;> import> java.util.*;> class> GFG {> > // Main Method> > public> static> void> main(String[] args)> > {> > // Declaring the Vector> > Vector v => new> Vector();> > // Appending new elements at> > // the end of the list> > for> (> int> i => 1> ; i <=> 5> ; i++)> > v.add(i);> > // Printing elements> > System.out.println(v);> > // Remove element at index 3> > v.remove(> 3> );> > // Displaying the Vector> > // after deletion> > System.out.println(v);> > // Printing elements one by one> > for> (> int> i => 0> ; i System.out.print(v.get(i) + ' '); } }> |
>
>出力
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>
iv)。 スタック
スタッククラスモデルと実装最初のうちの最後の。基本的なプッシュ操作とポップ操作に加えて、このクラスはさらに 3 つの関数 empty、search、peek を提供します。このクラスは、Vector のサブクラスと呼ぶこともできます。
例を挙げてスタックを理解しましょう。
ジャワ
// Java program to demonstrate the> // working of a stack> import> java.util.*;> public> class> GFG {> > // Main Method> > public> static> void> main(String args[])> > {> > Stack stack => new> Stack();> > stack.push(> 'Geeks'> );> > stack.push(> 'For'> );> > stack.push(> 'Geeks'> );> > stack.push(> 'Geeks'> );> > // Iterator for the stack> > Iterator itr = stack.iterator();> > // Printing the stack> > while> (itr.hasNext()) {> > System.out.print(itr.next() +> ' '> );> > }> > System.out.println();> > stack.pop();> > // Iterator for the stack> > itr = stack.iterator();> > // Printing the stack> > while> (itr.hasNext()) {> > System.out.print(itr.next() +> ' '> );> > }> > }> }> |
>
>出力
Geeks For Geeks Geeks Geeks For Geeks>
注記: Stack は Vector のサブクラスであり、レガシー クラスです。スレッドセーフであるため、スレッドセーフが必要ない環境ではオーバーヘッドになる可能性があります。スタックの代わりに使用するのは、 配列デキュー これはスレッドセーフではなく、配列の実装が高速になります。
4. キューインターフェイス
名前が示すように、キュー インターフェイスは、現実のキュー ラインと同様に FIFO (先入れ先出し) 順序を維持します。このインターフェイスは、要素の順序が重要なすべての要素を保存することに特化しています。たとえば、チケットを予約しようとすると、チケットは先着順で販売されます。したがって、リクエストがキューに最初に到着した人がチケットを取得します。など様々なクラスがあります 優先キュー 、 ArrayDeque これらすべてのサブクラスがキューを実装しているため、これらのクラスのいずれかを使用してキュー オブジェクトをインスタンス化できます。
例えば:
Queue pq = new PriorityQueue (); Queue ad = new ArrayDeque (); Where T is the type of the object.>
キュー インターフェイスの最も頻繁に使用される実装は、PriorityQueue です。
優先キュー
PriorityQueue は、オブジェクトが優先度に基づいて処理される必要がある場合に使用されます。キューが先入れ先出しアルゴリズムに従うことは知られていますが、キューの要素を優先度に従って処理する必要がある場合があり、このクラスはそのような場合に使用されます。 PriorityQueue は優先度ヒープに基づいています。優先キューの要素は、自然な順序に従って、または順序に従って順序付けされます。 コンパレータ 使用されるコンストラクターに応じて、キューの構築時に提供されます。
例を使用してプライオリティ キューを理解しましょう。
ジャワ
// Java program to demonstrate the working of> // priority queue in Java> import> java.util.*;> class> GfG {> > // Main Method> > public> static> void> main(String args[])> > {> > // Creating empty priority queue> > PriorityQueue pQueue> > => new> PriorityQueue();> > // Adding items to the pQueue using add()> > pQueue.add(> 10> );> > pQueue.add(> 20> );> > pQueue.add(> 15> );> > // Printing the top element of PriorityQueue> > System.out.println(pQueue.peek());> > // Printing the top element and removing it> > // from the PriorityQueue container> > System.out.println(pQueue.poll());> > // Printing the top element again> > System.out.println(pQueue.peek());> > }> }> |
>
>出力
10 10 15>
5. そしてインターフェース
これは非常にわずかなバリエーションです 例えば:
単純なJavaプログラム
Deque ad = new ArrayDeque (); Where T is the type of the object.>
deque インターフェースを実装するクラスは ArrayDeque です。
ArrayDeque
コレクション フレームワークに実装されている ArrayDeque クラスは、サイズ変更可能な配列を適用する方法を提供します。これは、拡張する特別な種類の配列で、ユーザーがキューの両側で要素を追加または削除できるようにします。配列デックには容量制限がなく、使用をサポートするために必要に応じて拡張されます。
例で ArrayDeque を理解しましょう。
ジャワ
// Java program to demonstrate the> // ArrayDeque class in Java> import> java.util.*;> public> class> ArrayDequeDemo {> > public> static> void> main(String[] args)> > {> > // Initializing an deque> > ArrayDeque de_que> > => new> ArrayDeque(> 10> );> > // add() method to insert> > de_que.add(> 10> );> > de_que.add(> 20> );> > de_que.add(> 30> );> > de_que.add(> 40> );> > de_que.add(> 50> );> > System.out.println(de_que);> > // clear() method> > de_que.clear();> > // addFirst() method to insert the> > // elements at the head> > de_que.addFirst(> 564> );> > de_que.addFirst(> 291> );> > // addLast() method to insert the> > // elements at the tail> > de_que.addLast(> 24> );> > de_que.addLast(> 14> );> > System.out.println(de_que);> > }> }> |
>
>出力
[10, 20, 30, 40, 50] [291, 564, 24, 14]>
6. インターフェースの設定
セットは、重複した値を格納できない、順序付けされていないオブジェクトのコレクションです。このコレクションは、オブジェクトの重複を避け、一意のオブジェクトのみを保存したい場合に使用されます。このセット インターフェイスは、HashSet、TreeSet、LinkedHashSet などのさまざまなクラスによって実装されます。すべてのサブクラスがセットを実装するため、これらのクラスのいずれかを使用してセット オブジェクトをインスタンス化できます。
例えば:
Set hs = new HashSet (); Set lhs = new LinkedHashSet (); Set ts = new TreeSet (); Where T is the type of the object.>
Set インターフェイスを実装するクラスは次のとおりです。
私)。 ハッシュセット
HashSet クラスは、ハッシュ テーブル データ構造の固有の実装です。 HashSet に挿入するオブジェクトは、同じ順序で挿入されることを保証しません。オブジェクトはハッシュコードに基づいて挿入されます。このクラスでは、NULL 要素の挿入も許可されます。例を挙げて HashSet を理解しましょう。
ジャワ
// Java program to demonstrate the> // working of a HashSet> import> java.util.*;> public> class> HashSetDemo {> > // Main Method> > public> static> void> main(String args[])> > {> > // Creating HashSet and> > // adding elements> > HashSet hs => new> HashSet();> > hs.add(> 'Geeks'> );> > hs.add(> 'For'> );> > hs.add(> 'Geeks'> );> > hs.add(> 'Is'> );> > hs.add(> 'Very helpful'> );> > // Traversing elements> > Iterator itr = hs.iterator();> > while> (itr.hasNext()) {> > System.out.println(itr.next());> > }> > }> }> |
Javaのif else文
>
>出力
Very helpful Geeks For Is>
ii)。 リンクされたハッシュセット
LinkedHashSet は HashSet に非常に似ています。違いは、データの保存に二重リンク リストを使用し、要素の順序が保持されることです。
例を使用して LinkedHashSet を理解しましょう。
ジャワ
// Java program to demonstrate the> // working of a LinkedHashSet> import> java.util.*;> public> class> LinkedHashSetDemo {> > // Main Method> > public> static> void> main(String args[])> > {> > // Creating LinkedHashSet and> > // adding elements> > LinkedHashSet lhs> > => new> LinkedHashSet();> > lhs.add(> 'Geeks'> );> > lhs.add(> 'For'> );> > lhs.add(> 'Geeks'> );> > lhs.add(> 'Is'> );> > lhs.add(> 'Very helpful'> );> > // Traversing elements> > Iterator itr = lhs.iterator();> > while> (itr.hasNext()) {> > System.out.println(itr.next());> > }> > }> }> |
>
>出力
Geeks For Is Very helpful>
7。 ソートセットインターフェイス
このインターフェイスは set インターフェイスと非常によく似ています。唯一の違いは、このインターフェイスには要素の順序を維持する追加のメソッドがあることです。ソートされたセット インターフェイスはセット インターフェイスを拡張し、ソートが必要なデータを処理するために使用されます。このインターフェースを実装するクラスは TreeSet です。このクラスは SortedSet を実装しているため、このクラスを使用して SortedSet オブジェクトをインスタンス化できます。
例えば:
SortedSet ts = new TreeSet (); Where T is the type of the object.>
ソートセットインターフェイスを実装するクラスは TreeSet です。
ツリーセット
TreeSet クラスは、ストレージに Tree を使用します。要素の順序は、明示的なコンパレータが提供されるかどうかに関係なく、自然な順序を使用してセットによって維持されます。 Set インターフェイスを正しく実装するには、これは、equals と一致している必要があります。使用されるコンストラクターに応じて、設定された作成時に提供されるコンパレーターによって順序付けすることもできます。
例を挙げて TreeSet を理解しましょう。
ジャワ
// Java program to demonstrate the> // working of a TreeSet> import> java.util.*;> public> class> TreeSetDemo {> > // Main Method> > public> static> void> main(String args[])> > {> > // Creating TreeSet and> > // adding elements> > TreeSet ts => new> TreeSet();> > ts.add(> 'Geeks'> );> > ts.add(> 'For'> );> > ts.add(> 'Geeks'> );> > ts.add(> 'Is'> );> > ts.add(> 'Very helpful'> );> > // Traversing elements> > Iterator itr = ts.iterator();> > while> (itr.hasNext()) {> > System.out.println(itr.next());> > }> > }> }> |
>
>出力
アルファベットから数字へ
For Geeks Is Very helpful>
8. マップインターフェイス
マップは、データをマッピングするためのキーと値のペアをサポートするデータ構造です。同じキーに複数のマッピングを設定できないため、このインターフェイスは重複キーをサポートしませんが、異なるキーでの重複値は許可されます。マップは、データがあり、キーに基づいて操作を実行したい場合に役立ちます。このマップ インターフェイスは、次のようなさまざまなクラスによって実装されます。 ハッシュマップ 、 ツリーマップ すべてのサブクラスがマップを実装しているため、これらのクラスのいずれかを使用してマップ オブジェクトをインスタンス化できます。
例えば:
Map hm = new HashMap (); Map tm = new TreeMap (); Where T is the type of the object.>
頻繁に使用される Map インターフェイスの実装は HashMap です。
ハッシュマップ
HashMap は、Java の Map インターフェイスの基本的な実装を提供します。データは (キー、値) ペアで保存されます。 HashMap 内の値にアクセスするには、そのキーを知っている必要があります。 HashMap はハッシュと呼ばれる手法を使用します。ハッシュとは、インデックス付けと検索操作を高速化するために、大きな文字列を同じ文字列を表す小さな文字列に変換する手法です。 HashSet は内部でも HashMap を使用します。
例を挙げて HashMap を理解しましょう。
ジャワ
// Java program to demonstrate the> // working of a HashMap> import> java.util.*;> public> class> HashMapDemo {> > // Main Method> > public> static> void> main(String args[])> > {> > // Creating HashMap and> > // adding elements> > HashMap hm> > => new> HashMap();> > hm.put(> 1> ,> 'Geeks'> );> > hm.put(> 2> ,> 'For'> );> > hm.put(> 3> ,> 'Geeks'> );> > // Finding the value for a key> > System.out.println(> 'Value for 1 is '> + hm.get(> 1> ));> > // Traversing through the HashMap> > for> (Map.Entry e : hm.entrySet())> > System.out.println(e.getKey() +> ' '> > + e.getValue());> > }> }> |
>
>出力
Value for 1 is Geeks 1 Geeks 2 For 3 Geeks>