logo

Java のコレクション

  1. Java コレクション フレームワーク
  2. コレクションフレームワークの階層
  3. コレクションインターフェース
  4. イテレータインターフェース

Java でのコレクション は、オブジェクトのグループを保存および操作するためのアーキテクチャを提供するフレームワークです。

Java コレクションは、検索、並べ替え、挿入、操作、削除など、データに対して実行するすべての操作を実行できます。

Java コレクションとは、オブジェクトの単一ユニットを意味します。 Java コレクション フレームワークは、多くのインターフェイス (Set、List、Queue、Deque) とクラス ( 配列リスト ベクトル, リンクリスト優先キュー 、HashSet、LinkedHashSet、TreeSet)。

Javaのコレクションとは何ですか

コレクションは、オブジェクトの単一単位、つまりグループを表します。

Javaのフレームワークとは何ですか

  • 既成のアーキテクチャを提供します。
  • これはクラスとインターフェイスのセットを表します。
  • オプションです。

コレクションフレームワークとは

Collection フレームワークは、オブジェクトのグループを保存および操作するための統合アーキテクチャを表します。それは次のとおりです:

  1. インターフェースとその実装、つまりクラス
  2. アルゴリズム

あなたは知っていますか?
  • コレクションの要素を反復する 2 つの方法は何ですか?
  • コレクション フレームワークの ArrayList クラスと LinkedList クラスの違いは何ですか?
  • コレクション フレームワークの ArrayList クラスと Vector クラスの違いは何ですか?
  • コレクション フレームワークの HashSet クラスと HashMap クラスの違いは何ですか?
  • HashMap クラスと Hashtable クラスの違いは何ですか?
  • コレクション フレームワークの Iterator インターフェイスと Enumeration インターフェイスの違いは何ですか?
  • オブジェクトの要素を並べ替えるにはどうすればよいでしょうか? Comparable インターフェイスと Comparator インターフェイスの違いは何ですか?
  • hashcode() メソッドは何をするのでしょうか?
  • Java コレクションと Java コレクションの違いは何ですか?

コレクションフレームワークの階層

Collection フレームワークの階層を見てみましょう。の java.util パッケージにはすべてが含まれています クラス そして インターフェース コレクションフレームワーク用。

Java Collection フレームワークの階層

収集方法インターフェース

Collection インターフェースでは多くのメソッドが宣言されています。それらは次のとおりです。

いいえ。方法説明
1public boolean add(E e)このコレクションに要素を挿入するために使用されます。
2public boolean addAll(コレクション c)これは、指定されたコレクション要素を呼び出し元のコレクションに挿入するために使用されます。
3public boolean delete(オブジェクト要素)コレクションから要素を削除するために使用されます。
4public boolean RemoveAll(コレクション c)これは、指定されたコレクションのすべての要素を呼び出し元のコレクションから削除するために使用されます。
5デフォルトのブール値のremoveIf(述語フィルター)指定された述語を満たすコレクションのすべての要素を削除するために使用されます。
6public boolean restartAll(コレクション c)これは、指定されたコレクションを除く、呼び出し元のコレクションのすべての要素を削除するために使用されます。
7public int size()コレクション内の要素の合計数を返します。
8パブリックボイドクリア()コレクションから要素の総数を削除します。
9public boolean contains(Object 要素)要素を検索するために使用されます。
10public boolean containsAll(コレクション c)コレクション内の指定されたコレクションを検索するために使用されます。
十一public イテレータ iterator()イテレータを返します。
12public Object[] toArray()コレクションを配列に変換します。
13public T[] toArray(T[] a)コレクションを配列に変換します。ここで、返される配列のランタイム型は、指定された配列のランタイム型です。
14パブリックブール値 isEmpty()コレクションが空かどうかを確認します。
15デフォルトのストリームParallelStream()コレクションをソースとして持つ並列ストリームを返します。
16デフォルトのストリーム stream()コレクションをソースとして含む連続した Stream を返します。
17デフォルトの Spliterator スプリッテレータ()コレクション内の指定された要素に対して Spliterator を生成します。
18public booleanequals(オブジェクト要素)2 つのコレクションに一致します。
19public int hashCode()コレクションのハッシュ コード番号を返します。

イテレータインターフェース

Iterator インターフェイスは、要素を順方向のみに反復する機能を提供します。

Iteratorインターフェースのメソッド

Iterator インターフェースにはメソッドが 3 つだけあります。彼らです:

いいえ。方法説明
1パブリックブール値 hasNext()イテレータにさらに多くの要素がある場合は true を返し、それ以外の場合は false を返します。
2public Object next()要素を返し、カーソル ポインタを次の要素に移動します。
3パブリック void 削除()イテレータによって返された最後の要素を削除します。使用頻度は低いです。

反復可能なインターフェース

Iterable インターフェイスは、すべてのコレクション クラスのルート インターフェイスです。 Collection インターフェイスは Iterable インターフェイスを拡張するため、Collection インターフェイスのすべてのサブクラスも Iterable インターフェイスを実装します。

抽象メソッドが 1 つだけ含まれています。つまり、

Javaは文字列をintに変換します
 Iterator iterator() 

型 T の要素に対する反復子を返します。


収集インターフェース

Collection インターフェイスは、コレクション フレームワーク内のすべてのクラスによって実装されるインターフェイスです。すべてのコレクションが持つメソッドを宣言します。言い換えれば、Collection インターフェイスは、コレクション フレームワークが依存する基盤を構築すると言えます。

Collection インターフェースのメソッドには、Boolean add (Object obj)、Boolean addAll (Collection c)、void clear() などがあります。これらは、Collection インターフェースのすべてのサブクラスによって実装されます。


リストインターフェース

List インターフェイスは Collection インターフェイスの子インターフェイスです。これは、オブジェクトの順序付けられたコレクションを格納できるリスト型のデータ構造を妨げます。重複した値を持つことができます。

List インターフェイスは、ArrayList、LinkedList、Vector、および Stack クラスによって実装されます。

List インターフェースをインスタンス化するには、以下を使用する必要があります。

Javaのタイプ
 List list1= new ArrayList(); List list2 = new LinkedList(); List list3 = new Vector(); List list4 = new Stack(); 

List インターフェイスには、リストの要素を挿入、削除、アクセスするために使用できるさまざまなメソッドがあります。

List インターフェースを実装するクラスを以下に示します。


配列リスト

ArrayList クラスは List インターフェイスを実装します。動的配列を使用して、さまざまなデータ型の重複要素を保存します。 ArrayList クラスは挿入順序を維持し、非同期です。 ArrayList クラスに格納されている要素にはランダムにアクセスできます。次の例を考えてみましょう。

 import java.util.*; class TestJavaCollection1{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Ravi');//Adding object in arraylist list.add('Vijay'); list.add('Ravi'); list.add('Ajay'); //Traversing list through Iterator Iterator itr=list.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

出力:

 Ravi Vijay Ravi Ajay 

リンクリスト

LinkedList は Collection インターフェイスを実装します。内部的に二重リンクリストを使用して要素を保存します。重複した要素を保存できます。広告掲載順序は維持されますが、同期はされません。 LinkedList では、シフトが必要ないため、操作が高速になります。

次の例を考えてみましょう。

 import java.util.*; public class TestJavaCollection2{ public static void main(String args[]){ LinkedList al=new LinkedList(); al.add('Ravi'); al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); Iterator itr=al.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

出力:

 Ravi Vijay Ravi Ajay 

ベクター

Vector は動的配列を使用してデータ要素を保存します。 ArrayList に似ています。ただし、同期されており、コレクション フレームワークの一部ではない多くのメソッドが含まれています。

次の例を考えてみましょう。

 import java.util.*; public class TestJavaCollection3{ public static void main(String args[]){ Vector v=new Vector(); v.add('Ayush'); v.add('Amit'); v.add('Ashish'); v.add('Garima'); Iterator itr=v.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

出力:

 Ayush Amit Ashish Garima 

スタック

スタックは Vector のサブクラスです。これは、後入れ先出しデータ構造、つまりスタックを実装します。スタックには Vector クラスのすべてのメソッドが含まれており、そのプロパティを定義する boolean Push()、boolean Peak()、Boolean Push(object o) などのメソッドも提供されます。

次の例を考えてみましょう。

単純なJavaプログラム
 import java.util.*; public class TestJavaCollection4{ public static void main(String args[]){ Stack stack = new Stack(); stack.push('Ayush'); stack.push('Garvit'); stack.push('Amit'); stack.push('Ashish'); stack.push('Garima'); stack.pop(); Iterator itr=stack.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

出力:

 Ayush Garvit Amit Ashish 

キューインターフェース

キュー インターフェイスは先入れ先出しの順序を維持します。これは、処理される要素を保持するために使用される順序付きリストとして定義できます。 Queue インターフェイスを実装する PriorityQueue、Deque、ArrayDeque などのさまざまなクラスがあります。

キュー インターフェイスは次のようにインスタンス化できます。

 Queue q1 = new PriorityQueue(); Queue q2 = new ArrayDeque(); 

Queue インターフェイスを実装するさまざまなクラスがあり、その一部を以下に示します。


優先キュー

PriorityQueue クラスは Queue インターフェイスを実装します。優先順位に従って処理される要素またはオブジェクトを保持します。 PriorityQueue では、キューに null 値を格納することはできません。

次の例を考えてみましょう。

 import java.util.*; public class TestJavaCollection5{ public static void main(String args[]){ PriorityQueue queue=new PriorityQueue(); queue.add('Amit Sharma'); queue.add('Vijay Raj'); queue.add('JaiShankar'); queue.add('Raj'); System.out.println('head:'+queue.element()); System.out.println('head:'+queue.peek()); System.out.println('iterating the queue elements:'); Iterator itr=queue.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } queue.remove(); queue.poll(); System.out.println('after removing two elements:'); Iterator itr2=queue.iterator(); while(itr2.hasNext()){ System.out.println(itr2.next()); } } } 

出力:

 head:Amit Sharma head:Amit Sharma iterating the queue elements: Amit Sharma Raj JaiShankar Vijay Raj after removing two elements: Raj Vijay Raj 

そしてインターフェース

Deque インターフェイスは Queue インターフェイスを拡張します。 Deque では、両側から要素を削除したり追加したりできます。 Deque は両端キューの略で、両端で操作を実行できるようにします。

Deque は次のようにインスタンス化できます。

Javaのif else文
 Deque d = new ArrayDeque(); 

ArrayDeque

ArrayDeque クラスは Deque インターフェイスを実装します。これにより、Deque の使用が容易になります。キューとは異なり、両端から要素を追加または削除できます。

ArrayDeque は ArrayList や Stack よりも高速で、容量制限はありません。

次の例を考えてみましょう。

 import java.util.*; public class TestJavaCollection6{ public static void main(String[] args) { //Creating Deque and adding elements Deque deque = new ArrayDeque(); deque.add('Gautam'); deque.add('Karan'); deque.add('Ajay'); //Traversing elements for (String str : deque) { System.out.println(str); } } } 

出力:

 Gautam Karan Ajay 

インターフェースの設定

Java の Set Interface は java.util パッケージに存在します。これは Collection インターフェイスを拡張します。これは、重複した項目を保存できない、順序付けされていない要素のセットを表します。 Set には最大 1 つの null 値を格納できます。 Set は HashSet、LinkedHashSet、TreeSet によって実装されます。

セットは次のようにインスタンス化できます。

 Set s1 = new HashSet(); Set s2 = new LinkedHashSet(); Set s3 = new TreeSet(); 

ハッシュセット

HashSet クラスは Set インターフェイスを実装します。これは、ストレージにハッシュ テーブルを使用するコレクションを表します。ハッシュは要素を HashSet に保存するために使用されます。ユニークなアイテムが含まれています。

アルファベットから数字へ

次の例を考えてみましょう。

 import java.util.*; public class TestJavaCollection7{ public static void main(String args[]){ //Creating HashSet and adding elements HashSet set=new HashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); //Traversing elements Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

出力:

 Vijay Ravi Ajay 

リンクされたハッシュセット

LinkedHashSet クラスは、Set インターフェイスの LinkedList 実装を表します。 HashSet クラスを拡張し、Set インターフェイスを実装します。 HashSet と同様に、これにも独自の要素が含まれています。挿入順序が維持され、null 要素が許可されます。

次の例を考えてみましょう。

 import java.util.*; public class TestJavaCollection8{ public static void main(String args[]){ LinkedHashSet set=new LinkedHashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

出力:

 Ravi Vijay Ajay 

ソートセットインターフェイス

SortedSet は、要素の全体的な順序付けを提供する Set インターフェイスの代替です。 SortedSet の要素は昇順に配置されます。 SortedSet は、要素の自然な順序付けを禁止する追加のメソッドを提供します。

SortedSet は次のようにインスタンス化できます。

 SortedSet set = new TreeSet(); 

ツリーセット

Java TreeSet クラスは、ストレージにツリーを使用する Set インターフェイスを実装します。 HashSet と同様に、TreeSet にも固有の要素が含まれています。ただし、TreeSet のアクセスと取得時間は非常に高速です。 TreeSet 内の要素は昇順で格納されます。

次の例を考えてみましょう。

 import java.util.*; public class TestJavaCollection9{ public static void main(String args[]){ //Creating and adding elements TreeSet set=new TreeSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); //traversing elements Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

出力:

 Ajay Ravi Vijay 
Java Collections Framework で何を学ぶのか
  1. ArrayList クラス
  2. LinkedList クラス
  3. リストインターフェース
  4. ハッシュセットクラス
  5. LinkedHashSet クラス
  6. ツリーセットクラス
  7. PriorityQueueクラス
  8. マップインターフェース
  9. ハッシュマップクラス
  10. LinkedHashMap クラス
  11. TreeMap クラス
  12. ハッシュテーブルクラス
  13. 仕分け
  14. 同等のインターフェース
  15. コンパレータインターフェース
  16. Javaのプロパティクラス