java collections framework tutorial
このチュートリアルでは、Javaコレクションフレームワーク(JCF)について、コレクション階層、さまざまなインターフェイス、およびJCFの利点とともに詳細に説明します。
これに関するこれらの雄弁なチュートリアルを願っています 初心者向けJavaシリーズ Javaの知識を深めるのに本当に役立ちます。
以前のチュートリアルでは、 Javaでの基本的なI / O操作 。 このチュートリアルでは、Javaコレクションフレームワーク(JCF)について詳しく学習します。
Javaコレクションフレームワーク(JCF)には、オブジェクトのグループを格納および操作するためのアーキテクチャを提供できるインターフェイス、抽象クラス、およびクラスが含まれています。
学習内容:
- Javaコレクションフレームワークのビデオチュートリアル
- 結論
Javaコレクションフレームワークのビデオチュートリアル
JavaのArraylistの知識:
リアルタイムの例を使用して、Javaでインターフェイスとキューインターフェイスを設定します。
JavaのHashMap、TreeMap、HashTable:
これまで、さまざまなタイプのデータを格納する変数を見てきました。これらは単一の単位であり、保存および処理する大量のデータがある場合はあまり役に立ちません。ご存知のように、データはコンピューター処理の最も重要な構成要素です。
アプリケーションは、データを抽出および収集し、それを処理して有用な情報を見つけ、ソリューションに到達するために効率的に使用されるように、データをやり取りできる必要があります。
このソフトウェアの世界では、ソフトウェアプログラムが結果を保存、読み取り、処理し、最終的に出力できるように、特定の方法で構造化する必要のあるデータを保存します。これは、データ構造を使用して行われます。
ほとんどすべてのプログラミング言語はデータ構造をサポートしています。データ構造は、データの構造化された表現として定義できます。プログラミング言語は、データ構造を操作するためにAPI(アプリケーションプログラミングインターフェイス)関数を提供します。
コレクションフレームワークの必要性
Java 1.2より前は、Javaプログラミング言語は配列、ベクトル、ハッシュテーブルなどのデータ構造をサポートしていました。これらのデータ構造で機能する共通のインターフェースがなかったため、これらのデータ構造での操作の実行は容易ではありませんでした。
プログラマーは、すべてのデータ構造で機能するアルゴリズムを作成するのが難しく、非常に面倒であることに気づいていました。すべてのデータ構造で一貫して機能し、操作を効率的に実行する共通のインターフェースが必要でした。
その後、Javaは、データ構造に対して実行できるさまざまな操作で構成されるクラスとインターフェースのグループであるコレクションフレームワークを考案しました。
このJavaコレクションチュートリアルでは、Javaコレクションフレームワーク全般について説明します。今後のチュートリアルでは、各コレクションコンポーネントについて説明します。
Javaコレクションフレームワーク
Javaコレクションフレームワークを定義する前に、コレクションとフレームワークの意味を理解しましょう。
コレクションは、オブジェクトのグループとして定義できます。コレクションは通常、複数のオブジェクトで構成される単一のユニットです。フレームワークは、既製の機能インターフェイスまたはアーキテクチャを備え、提供されたインターフェイスで使用されるクラスとインターフェイスのセットも含むソフトウェアです。
コレクションフレームワークは、以下で構成される統合された既製のアーキテクチャとして定義されます。
#1)アルゴリズム
これらは、収集されたデータの検索、ソート、および処理においてプログラマーを支援できるメソッドまたはステートメントのセットです。このコレクションには、インターフェイス、クラス、およびアルゴリズムがパッケージ化されています。
コレクションフレームワークを継承して開発されたアプリケーションは、これらのアルゴリズムにアクセスでき、すでに定義されているメソッドと手順を使用します。
#2)インターフェース
Javaのインターフェースは、実装の抽象化を提供します。つまり、インターフェースを使用すると、ユーザーは実装の詳細を認識しませんが、アプリケーションの作成に必要なメソッドとデータのみを表示できます。コレクションインターフェイスには、プログラマが独自のクラスを作成するために実装できる多くのインターフェイスがあります。
#3)クラス
Collection Frameworkのクラスは、プログラムに実装できるデータ構造です。これらのクラスは「コレクション」インターフェイスを実装しているため、コレクションインターフェイスのすべてのメソッドと定義を継承します。
コレクションフレームワークは、オブジェクトのグループであるコレクションを格納および操作するために使用されます。
Javaコレクションフレームワークは、検索、並べ替え、処理などの標準的な操作を実行する高性能アルゴリズムで構成されています。これは、インターフェースが提供されるLinkedList、TreeSet、HashSetなどのさまざまな標準実装を提供します。
次に、Javaコレクションの階層について理解しましょう。
Javaコレクション階層
以下のJavaコレクション階層に示されているすべてのクラスとインターフェースは「java.util。*」パッケージに属しています。

上の図に示すように、Javaコレクション階層はさまざまなクラスとインターフェースで構成されています。ご覧のとおり、各クラスはインターフェイスから継承し、すべてのクラスとインターフェイスは1つの「コレクション」インターフェイスから継承します。
上記の階層に示されている各クラスとインターフェースについての簡単な紹介とともに、コレクションインターフェースのいくつかの一般的なメソッドについて説明しましょう。
コレクションインターフェイス
コレクションインターフェイスはルートインターフェイスです。コレクションフレームワークのすべてのクラスは、コレクションインターフェイスを実装します。これは、すべてのコレクションに、コレクションインターフェイスで宣言されたメソッドがあることを意味します。
コレクションインターフェイスのメソッドのいくつかを以下に示します。
| しない | メソッドプロトタイプ | 説明 |
|---|---|---|
| 7 | デフォルトのブール値removeIf(述語フィルター) | 指定された述語「フィルター」を満たすすべての要素をコレクションから削除します。 |
| 1 | public int size() | 指定されたコレクション内の要素の数を返します。 |
| 二 | public void clear() | コレクションからすべての要素を削除して、コレクションをクリアします。 |
| 3 | public boolean add(E e) | コレクションに要素eを挿入します。 |
| 4 | public booleanaddAll(Collection c) | cで指定されたコレクション内のすべての要素をコレクションに挿入します。 |
| 5 | public boolean remove(Object element) | 「element」で指定された要素をコレクションから削除します。 |
| 6 | public boolean removeAll(Collectionc) | コレクションcをコレクションから削除します。 |
| 8 | public booleanretainAll(Collection c) | 指定されたコレクション内の要素を除くすべての要素をコレクションから削除しますc。 |
| 9 | public Iterator iterator() | コレクションのイテレータを返します。 |
| 10 | public Object () toArray() | コレクションを配列に変換します。 |
| 十一 | public T () toArray(T () a) | コレクションを、指定された戻り値の型を持つ配列に変換します。 |
| 12 | public boolean isEmpty() | コレクションが空かどうかを返します。 |
| 13 | public boolean contains(Object element) | コレクションに特定の要素が含まれているかどうかを確認します(検索操作)。 |
| 14 | public booleancontainsAll(Collectionc) | コレクションに指定されたコレクションcが含まれているかどうかを確認します。 |
| 15 | デフォルトのSplitteratorspliterator() | 指定されたコレクションのスプリッターを返します。 |
| 16 | public booleanequals(オブジェクト要素) | 2つのコレクションを照合するために使用されます。 |
| 17 | デフォルトのストリームparallelStream() | コレクションをソースとして使用して並列ストリームを返します。 |
| 18 | デフォルトのStreamstream() | コレクションをソースとして使用してシーケンシャルストリームを返します。 |
| 19 | public int hashCode() | コレクションの数値ハッシュコードを返します。 |
反復可能なインターフェース
Iterableインターフェースは、コレクションフレームワークの基本インターフェースでもあります。他のすべてのクラスの親インターフェイスであるCollectionインターフェイスは、Iterableインターフェイスを拡張します。したがって、すべてのクラスは、コレクションインターフェイスとIterableインターフェイスを実装します。
Iterableインターフェイスには、タイプTの要素を反復処理するために使用できるイテレータ()を返すメソッドiterator()が1つだけあります。
Iterator iterator ()イテレータインターフェイス
Iteratorインターフェースは、要素を順方向に反復する機能を提供します。
以下は、このインターフェースでサポートされているメソッドです。
| しない | メソッドプロトタイプ | 説明 |
|---|---|---|
| 1 | public Object next() | 最初に要素を返し、次にカーソルを移動して次の要素をポイントします。 |
| 二 | public boolean hasNext() | イテレータにさらに要素があるかどうかを確認します。 |
| 3 | public void remove() | 最後にイテレータによって返される要素を削除します。 |
リストインターフェイス
リストインターフェイスは、コレクションインターフェイスを継承します。リストインターフェイスには、順序付けられたデータまたはオブジェクトのコレクションを格納するために使用されるデータ構造が含まれています。これらのデータ構造はリストタイプです。リストインターフェイスを実装するこれらのデータ構造には、重複する値がある場合とない場合があります。
リストインターフェイスには、リストオブジェクトから要素にアクセス、挿入、または削除するために使用されるメソッドが含まれています。
Listインターフェイスを実装するさまざまなクラスは次のとおりです。
Android携帯でapkファイルを開く方法
- 配列リスト
- LinkedList
- ベクター
- スタック
これらの各クラスについて簡単に説明します。以降のトピックでは、各コレクションフレームワーククラスについて詳細に説明します。
#1)ArrayList
ArrayListは、Listインターフェイスの最も単純な実装です。 ArrayListは挿入順序を保持し、同期されません。
ArrayListデータ構造(コレクション)の一般的な定義は次のとおりです。
List list1= new ArrayList ();リストを定義したら、「add」メソッドを使用して要素を追加できます。内部的には、ArrayListが動的配列メカニズムを使用していることに注意してください。
色のArrayListコレクションを作成する次の例を参照してください。
import java.util.*; class Main { public static void main(String args()) { //Creating arraylist of String objects ArrayList color_list=new ArrayList(); //populate the arraylist with add method color_list.add('Red'); color_list.add('Green'); color_list.add('Blue'); color_list.add('Cyan'); color_list.add('Magenta'); color_list.add('Yellow'); //Traverse the list through Iterator Iterator itr=color_list.iterator(); System.out.println('The contents of the arraylist are:'); while(itr.hasNext()){ System.out.println(itr.next()); } } } 出力:

上記のプログラムは、ArrayListコレクションのデモンストレーションを示しています。コレクションに色の値を追加してから、コレクションをトラバースして、イテレーターを使用してコレクション内の個々の値を表示します。
#2)LinkedList
LinkedListコレクションは、要素を格納するために内部的に二重リンクリストメカニズムを使用します。重複する要素を含めることができます。要素のシフトが不要なため、LinkedListの収集操作が高速になります。
リンクリストの作成の一般的な定義は次のとおりです。
List list2 = new LinkedList ();次のプログラムは 番号名のリンクリストコレクション 。
import java.util.*; class Main { public static void main(String args()) { //linked list of String objects LinkedList linkedlist_num=new LinkedList(); linkedlist_num.add('one'); linkedlist_num.add('two'); linkedlist_num.add('three'); linkedlist_num.add('four'); linkedlist_num.add('five'); //iterate over the linked list to display contents Iterator itr=linkedlist_num.iterator(); System.out.println('The contents of the linked list are:'); while(itr.hasNext()) { System.out.println(itr.next()); } } } 出力:

したがって、リンクリストを作成し、「add」メソッドを使用してリストに要素を追加します。次に、イテレータを使用して、リンクリストをトラバースし、各要素を表示します。
#3)ベクトル
VectorはArrayListに似ており、動的配列を使用してArrayListなどの要素を格納します。ただし、vectorは、コレクションとは別に多くの独立したメソッドをサポートしているため、優先コレクションとして選択する方が適切です。
ベクターコレクションの一般的な定義は次のとおりです。
List list3 = new Vector();vectorとArrayListは動的配列の同じメカニズムを使用しますが、ベクトル要素は同期されていることに注意してください。
以下に示すJavaプログラムは、コレクションフレームワークでのベクターの使用法を示しています。 。
import java.util.*; public class Main { public static void main(String args()) { Vector subject_vector=new Vector(); subject_vector.add('English'); subject_vector.add('Hindi'); subject_vector.add('Maths'); subject_vector.add('Science'); Iterator itr=subject_vector.iterator(); System.out.println('Vector contents:'); while(itr.hasNext()) { System.out.println(itr.next()); } } } 出力:

このプログラムでは、サブジェクトで構成されるベクトルコレクションを定義しました。さまざまなサブジェクトを追加してから、イテレータを使用して要素を出力します。
#4)スタック
スタックデータ構造は、要素を挿入する後入れ先出し(LIFO)の方法を実装します。スタックはクラスベクトルのサブクラスです(上記のコレクション階層図を参照)。独自のメソッドとは別に、スタックコレクションはベクターコレクションのメソッドもサポートします。
スタックコレクションの一般的な定義は次のとおりです。
List list4 = new Stack();次のプログラム スタックコレクションを実装します 。
import java.util.*; public class Main { public static void main(String args()) { Stack even_stack = new Stack (); even_stack.push(2); even_stack.push(4); even_stack.push(6); even_stack.push(8); even_stack.push(10); System.out.println('The element removed from stack: ' + even_stack.pop()); Iterator itr=even_stack.iterator(); System.out.println('The contents of the stack are:'); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } } } 出力:

上記の実装でわかるように、新しい要素は、を使用してスタックに追加されます。 '押す' 操作。スタックには「スタックの最上位」と呼ばれる単一のエントリポイントがあり、要素は最上位のスタックにプッシュされます。したがって、最後に追加された要素はスタックの一番上にあります。
追加と同様に、要素も一方の端、つまりスタックの一番上から削除されます。要素を削除するには、「ポップ」操作を使用します。したがって、pop()を呼び出すと、スタックの最上位の要素が削除されます。
上記の出力では、要素2、4、6、8、10を挿入してから、pop()を呼び出して、10を削除します。
キューインターフェイス
キューインターフェイスから派生したコレクションは、先入れ先出し(FIFO)の順序に従います。要素は一方の端に挿入され、もう一方の端から削除されます。したがって、最初に入力された要素は、たまたま最初に削除された要素です。
以下に、クエリインターフェイスをサポートするコレクションを示します。
- PriorityQueue
- およびインターフェイス
- ArrayDeque
これらのそれぞれについて簡単に説明しましょう。
#1)PriorityQueue
PriorityQueueコレクションでは、保存されている要素は優先度に基づいて処理されます。 null値をプライオリティキューに保存することはできません。
優先キューの一般的な定義は次のとおりです。
Queue q1 = new PriorityQueue();以下のプログラムは、優先キューを実装します。
import java.util.*; public class Main { public static void main(String args()) { PriorityQueue color_queue=new PriorityQueue(); color_queue.add('red'); color_queue.add('green'); color_queue.add('blue'); color_queue.add('cyan'); color_queue.add('magenta'); color_queue.add('yellow'); System.out.println('Priority Queue elements:'); System.out.println('head:'+color_queue.peek()); System.out.println('Other elements in Priority Queue:'); Iterator itr=color_queue.iterator(); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } System.out.println('
'); color_queue.remove(); System.out.println('After removing element, new head:'+color_queue.element()); System.out.println('
'); color_queue.poll(); System.out.println('After removing another element, Priority Queue :'); Iterator itr2=color_queue.iterator(); while(itr2.hasNext()) { System.out.print(itr2.next() + ' '); } } } 出力:

ここでも、優先度キューの要素として色を使用します。上記のプログラムでは、メソッドaddとremoveを使用して、要素をキューに追加し、要素を削除しました。優先度キューでポイントする要素を返すpeek()メソッドを使用します。
最後にイテレータを使用して、優先度キューの要素が表示されます。
#2)タッチインターフェイス
Dequeまたは「両端キュー」は、両端から要素を追加および削除できるようにするデータ構造です。 Queueインターフェースを拡張するJavaコレクションフレームワークのdequeインターフェース。
dequeの機能を提供し、それを継承する「ArrayDeque」クラスがあります。
#3)ArrayDeque
ArrayDequeは、dequeインターフェイスを実装します。
ArrayDequeの一般的な定義は次のとおりです。
Deque d = new ArrayDeque();ArrayDequeを使用すると、Dequeの機能を使用できます。 ArrayListやスタックなどの他のコレクションとは異なり、ArrayDequeには容量の制限がありません。
次の例は、ArrayDequeの実装を示しています。
import java.util.*; public class Main { public static void main(String() args) { //Creating Deque and adding elements Deque deque = new ArrayDeque (); deque.add(10); deque.add(20); deque.add(30); System.out.println('Deque Elements:'); //Traversing elements for (Integer num : deque) { System.out.println(num); } } } 出力:

上記のプログラムでは、整数型のArrayDequeコレクションを定義し、addメソッドを使用して整数要素を追加します。次に、forコンストラクトを使用してコレクションをトラバースします。
インターフェースの設定
setインターフェースはjava.utilパッケージの一部であり、コレクションインターフェースから拡張されています。セットは、コレクションに重複する値と複数のnull値を含めることを許可しない構造です。
次のクラスは、setインターフェイスを実装します。
- HashSet
- LinkedHashSet
- TreeSet
#1)HashSet
Setインターフェイスを実装するHashSetコレクションには、個別の値が格納されています。このコレクションは、ハッシュ手法を使用してアイテムを格納し、ハッシュテーブルを使用して要素を格納します。
T HashSetコレクションの一般的な定義を以下に示します。
Set s1 = new HashSet();次のプログラムでHashSetの実装を行いました。
import java.util.*; public class Main { public static void main(String args()) { //Create HashSet set_subjects HashSet set_subjects=new HashSet(); System.out.println('Elements in the given hashsetset_subjects are:'); set_subjects.add('Maths'); set_subjects.add('Computers'); set_subjects.add('English'); set_subjects.add('French'); //Traverse the hashset Iterator itr=set_subjects.iterator(); while(itr.hasNext()) { System.out.println(itr.next()); } } } 出力:

上記のプログラムでは、サブジェクトのHashSetコレクションを作成し、イテレーターを使用してそれをトラバースして、コレクション内の要素を表示します。
#2)LinkedHashSet
LinkedHashSetは、セットインターフェイスを実装し、HashSetを拡張します(コレクション階層を参照)。 LinkedHashSetは、インターフェイスセットのリンクリスト表現です。 LinkedHashSetには一意の要素が含まれていますが、null値を許可します。
LinkedHashSetの一般的な定義を以下に示します。
Set s2 = new LinkedHashSet();LinkedHashSetの実装を以下に示します。
import java.util.*; public class Main { public static void main(String args()) { LinkedHashSet set_subjects=new LinkedHashSet(); System.out.println('Elements in the LinkedHashSet set_subjects:'); set_subjects.add('Maths'); set_subjects.add('Computers'); set_subjects.add('English'); set_subjects.add('Sanskrit'); Iterator itr=set_subjects.iterator(); while(itr.hasNext()) { System.out.println(itr.next()); } } } 出力:

もう一度、Linkedhashsetを作成するために本のタイトルを利用します。出力からわかるように、追加の順序はlinkedHashSetによって維持されます。
SortedSetインターフェイス
SortedSetインターフェースにより、要素の完全な順序付けが可能になります。要素の自然な順序を提供するメソッドが含まれています。 SortedSetインターフェイスを実装するコレクション内の要素は、昇順で配置されます。
TreeSetクラスは、SortedSetインターフェイスを実装する例の1つです。
ツリーセット
Treesetの一般的な定義は次のとおりです。
Set s3 = new TreeSet();TreeSetは、SortedSetインターフェイスを実装し、一意の要素を含みます。保存と取得は非常に高速で、要素は昇順で配置されます。
import java.util.*; public class Main{ public static void main(String args()) { //create a treeset of integers TreeSet set_oddnums=new TreeSet (); set_oddnums.add(1); set_oddnums.add(3); set_oddnums.add(5); set_oddnums.add(7); set_oddnums.add(9); System.out.println('Elements in TreeSet are:'); //traverse the treeset using iterator Iterator itr=set_oddnums.iterator(); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } } } 出力:

上記のプログラムでは、addメソッドを使用して奇数を作成し、コレクションに追加しました。次に、イテレータを使用して、コレクション内の要素を出力します。
Javaコレクションフレームワークの利点
- プログラミングの削減: コレクションフレームワークには、プログラマーが効率的なプログラムを作成できるようにするメソッドを含むすべてのインターフェイスとクラスが付属しています。このように、プログラマーはあまり多くのプログラミングに集中する必要はありません。
- 一貫したメソッドとAPI: すべてのクラスには、データに作用する共通のメソッドがあります。これらのAPIはクラス全体で一貫しており、プログラマーはクラスごとに異なるメソッドが多すぎることを心配する必要はありません。
- 速度と精度を向上させる: コレクションフレームワークはデータ構造とコレクションを実装するための完全な機能を提供するため、コレクションフレームワークを使用して非常に効率的なプログラムを作成でき、さらに高速で正確なプログラムを作成できます。
- ソフトウェアの再利用を促進します。 Javaコレクションフレームワークのデータ構造とアルゴリズムは再利用可能です。
- 無関係なAPI間の相互運用性: コレクションAPIは、無関係なAPI間でも相互運用性を可能にします。
- 新しいAPIを設計するための労力が少なくなります。 プログラマーは、標準のコレクションAPIを使用して、それに基づいて新しいAPIを設計できます。完全に新しいAPIを作成するのに苦労する必要はありません。
よくある質問
#1)Javaでのコレクションフレームワークの使用は何ですか?
回答: コレクションフレームワークは、プログラマーがデータを格納および処理できる非常に効率的なプログラムを作成できるようにする、事前にパッケージ化されたアルゴリズム、インターフェイス、およびクラスを提供します。
#2)コレクションがフレームワークである理由
回答: フレームワークは、クラス、インターフェイス、およびアルゴリズムの再利用可能なコレクションです。コレクションフレームワークは、データ構造クラスとこれらのクラスで動作するアルゴリズムの再利用可能なコレクションでもあります。
#3)JavaのJavaコレクションAPIとは何ですか?
回答: JavaコレクションAPIは、コレクションに他ならないデータ構造を使用するために拡張および実装できるインターフェースとクラスを提供します。
#4)コレクションとJavaのコレクションの違いは何ですか?
回答: コレクションはコレクションフレームワークの基本インターフェースであり、「コレクション」はクラスです。どちらもjava.utilパッケージの一部です。
**** Javaコレクションフレームワークの詳細と例: ****

リスト、セット、およびキューの比較:
| リスト | セットする | キュー |
|---|---|---|
| 挿入順序は維持されます | ハッシュセットでは挿入順序が維持されません | 挿入順序は維持されます。 |
| 重複する要素を含めることができます | 重複する要素を含めることはできません | 重複する要素を含めることができます。 |
| 配列の挿入と削除は、任意のインデックスに対して実行できます。 | 指定された要素を削除します。 | 最後に挿入された要素のみをポップアウトできます。また、要素の挿入は最後に行われます。 |
配列リストクラス
アレイでは、メモリ割り当ては固定されています。ただし、ArrayListでは、メモリを動的に割り当てることができます。このArrayListクラスは挿入順序を維持し、重複する要素を挿入できます。
最高のYouTubeビデオダウンローダーは何ですか
配列リストのデモプログラム:
public class ArrayListDemo { public static void main(String() args) { ArrayList li = new ArrayList (); li.add(1); li.add(2); li.add(3); li.remove(0); for (Integer temp : li) { System.out.println(temp); } System.out.println('=========='); ArrayList l = new ArrayList(); l.add('text1'); l.add('text2'); l.add('text3'); for (String temp : l) { System.out.println(temp); } System.out.println('=========='); ArrayList al=new ArrayList(); al.add(1); al.add(2); al.forEach((a)->;System.out.println(a)); } } 
LinkedListクラス
リンクリストのデータ構造にはノードが含まれ、このノードには次の2つの部分が含まれます。
- データ
- 次の要素への参照
最初のノードは独立したノードではありません。参照のみが含まれ、ヘッドと呼ばれます。最後のノードはnullです。

デモプログラム:
public class LinkedListDemo { public static void main(String() args) { LinkedList list =new LinkedList(); list.add(22); list.add(44); list.add(46); list.add(46); list.add(46); for(Integer temp:list) { System.out.println(temp); } Iterator it =list.iterator(); while(it.hasNext()) { System.out.println(it.next()); } System.out.println('=========='); for (int i=0;i 
キュー
キューは先入れ先出し(FIFO)データ構造です。 removeメソッドを呼び出すと、常に最初に挿入された要素がキューから削除されます。そのため、キューは、データを挿入された順序で取得する必要があるリアルタイムアプリケーションで使用されます。
プログラム例:
public class QueueDemo { public static void main(String() args) { PriorityQueue pq=new PriorityQueue(); pq.add(1); pq.add(2); pq.add(3); pq.add(4); pq.add(5); pq.add(6); pq.add(7); for(int temp : pq) { System.out.println(temp); } pq.remove(); System.out.println('queue after removing a element'); System.out.println(pq); } } 
セットする
セットコレクションでは、要素の重複は許可されません。重複せずにデータの収集を処理する場合、および挿入順序を維持する必要がない場合は、設定されたデータ構造を使用できます。
デモプログラム:
public class demohashset { public static void main (String() args){ HashSet hs=new HashSet(); hs.add(23); hs.add(24); hs.add(25); hs.add(26); hs.add(27); hs.add(28); hs.add(293); hs.add(203); hs.add(263); hs.add(243); hs.add(243); (int temp:hs) { System.out.println(temp); } hs.remove(24); hs.remove(23); System.out.println('==============='); System.out.println('after removing a element ::::'); System.out.println('==============='); hs.forEach((temp)->System.out.println(temp)); ; } } 
MAPインターフェース
- キーと値のペアを使用して要素のコレクションを処理する場合、マップはキーを値にマップできるオブジェクトであるため、マップデータ構造を使用できます。
- マップに重複するキーを含めることはできません。
- mapの重要な実装は、HashMap、Treemap、LinkedHashMap、HashTableです。
HashMap、Treemap、LinkedHashMap、およびHashTableの違い:
HashMap TreeMap LinkedHashmap ハッシュ表 ヌルキーと値が許可されます null値のみが許可されます。 ヌルキーと値を許可します。 nullキーと値は許可されません。 同期されていません 同期されていません 同期されていません 同期 反復で順序を維持する保証はありません 並べ替えは自然な順序に基づいて行われます。 挿入順序は維持されます 挿入順序が維持されていません。
デモプログラム:
public class HashMapDemo { public static void main(String() args) { HashMap m=new HashMap(); m.put(1, 'one'); m.put(2, 'two'); m.put(3, 'three'); m.put(4, 'four'); m.put(null, 'one'); m.put(null, null); System.out.println(m); TreeMap tm =new TreeMap(); tm.put('R', 'red'); tm.put('B', null); tm.put('G', 'green'); System.out.println(tm); Hashtable ht =new Hashtable(); ht.put(1, 'one'); ht.put(2, 'two'); ht.put(3, 'three'); ht.put(4, 'four'); System.out.println(ht); } } 
注意すべきキーポイント:
- List、Queue、setインターフェースはコレクションインターフェースを拡張し、このコレクションインターフェースにはadd、removeなどの一般的なメソッドがあります。
- 挿入順序はリストで維持され、セットに重複する要素を含めることはできません。キューは先入れ先出しデータ構造です。
- マップには、キーと値のペアが含まれます。 HashMap、Treemap、Hashtable、Linked HashMapは、マップインターフェイスの重要な実装です。
結論
このチュートリアルでは、Javaコレクションフレームワークの概要を説明しました。 Javaコレクションフレームワークの一部であるすべてのクラスとインターフェイスに簡単に触れました。
このシリーズの後続のチュートリアルでは、これらの各クラスとインターフェイスについて詳しく学習します。
今後のチュートリアルで、JAVAのリフレクションについて詳しく調べることができます!!!
推奨読書



