JavaRush /Java Blog /Random-JA /コーヒーブレイク#185。Java コレクション フレームワークの包括的なガイド

コーヒーブレイク#185。Java コレクション フレームワークの包括的なガイド

Random-JA グループに公開済み
出典: Medium このチュートリアルは、Java Collection Framework に含まれるさまざまなクラスとインターフェイスの仕組みをよりよく理解するのに役立ちます。 コーヒーブレイク#185。 Java コレクション フレームワークの総合ガイド - 1Java Collection は、オブジェクトのグループを保存および管理するための統合アーキテクチャを提供するフレームワークです。その核心は、Java 言語でオブジェクトのコレクションを表現および操作するための標準的な方法を提供するクラスとインターフェイスのセットです。このフレームワークは、List、Set、Map などの一般的に使用されるデータ構造の実装にも役立ちます。Java コレクション フレームワークには、いくつかのインターフェイスとクラスが含まれています。以下にその一部のリストを示します。

インターフェース

Java Collection Framework のインターフェースは、コレクションに対して実行できる一般的な動作と操作を定義します。これには、項目の追加または削除、コレクション内の項目の繰り返しなどが含まれます。
  • Collection : コレクション階層内のルート インターフェイス。要素として知られるオブジェクトのグループを表します。
  • List : 重複を許可する順序付けされた要素のコレクション。
  • Set : 重複を許可しない要素のコレクション。
  • Map : 各キーが一意である、キーと値のペアのコレクション。
  • キュー: キューは、要素を先入れ先出し (FIFO) で格納するために使用されるデータ構造です。
このリストにはすべてが含まれているわけではなく、Java Collection Framework で最も使用されるインターフェイスのみが含まれています。それでは、それぞれを詳しく見てみましょう。

コレクション

コレクションは、要素として知られるオブジェクトのグループです。これは、他のオブジェクトへの参照を含めることができるオブジェクトです。Collection インターフェイスは、コレクション階層のルートです。これは、Java Collection Framework のすべてのコレクションの基本インターフェイスです。すべてのコレクションに実装する必要がある基本メソッド ( add()remove()contains() など)を定義します。Java Collection Framework でのコレクションの使用例を次に示します。ここでは、Collection インターフェースを使用して、コレクションに要素を追加したりコレクションから要素を削除したりしています。
import java.util.Collection;
import java.util.ArrayList;

public class CollectionExample {
    public static void main(String[] args) {
        // Создаем новую коллекцию
        Collection<String> stringCollection = new ArrayList<>();

        // Добавляем несколько элементов в коллекцию
        stringCollection.add("hello");
        stringCollection.add("world");
        stringCollection.add("foo");
        stringCollection.add("bar");

        // Печатаем число элементов в коллекции
        System.out.println("Number of elements: " + stringCollection.size());

        // Удаляем элемент из коллекции
        stringCollection.remove("foo");

        // Опять печатаем число элементов в коллекции
        System.out.println("Number of elements: " + stringCollection.size());
    }
}
出力は次のとおりです。
要素数:4 要素数:3
ご覧のとおり、Collection インターフェイスは、オブジェクトのコレクションに対して一般的な操作を実行するためのシンプルで便利な方法です。これは、Java でコレクションを操作するときの開始点としてよく使用されます。Java コレクション フレームワークには、さまざまな種類のコレクションの共通動作を定義するいくつかのインターフェイスが含まれています。それらの一部は、 java.util.Collectionインターフェース グループの一部です。
  • java.util.List
  • java.util.set
  • java.util.Queue

java.util.List

リストはオブジェクトの順序付けられたコレクションであり、その各要素はリスト内の特定の位置を占めます。List インターフェイスは Collection インターフェイスを拡張し、リスト内の位置に基づいて要素にアクセスするメソッドやリストを検索および並べ替えるメソッドなど、リストを操作するためのメソッドをいくつか追加します。リストには重複した要素を含めることができ、これらの要素にはリスト内の位置によってアクセスできます。次に、List インターフェイスを使用してリスト内の項目を追加、削除、およびアクセスする例を示します。
import java.util.List;
import java.util.ArrayList;

public class ListExample {
    public static void main(String[] args) {
        // Создаем новый список
        List<String> stringList = new ArrayList<>();

        // Добавляем несколько элементов в список
        stringList.add("India");
        stringList.add("UAE");
        stringList.add("London");
        stringList.add("US");

        // Печатаем первый элемент в списке
        System.out.println("First element: " + stringList.get(0));

        // Удаляем второй элемент из списка
        stringList.remove(1);

        // Печатаем второй элемент в списке
        System.out.println("Second element: " + stringList.get(1));
    }
}
結論:
最初の要素: インド 2 番目の要素: ロンドン
上に示したように、List インターフェイスは、要素の順序付けされたコレクションを操作するための便利な方法を提供します。通常、コレクション内の要素の順序を維持する必要がある場合、またはリスト内のインデックスによって要素にアクセスする必要がある場合に使用されます。

java.util.Set

Java コレクション フレームワークのセットは、要素の重複を許可しない、順序付けされていない一意の要素のセットです。Set インターフェイスは Collection インターフェイスを拡張し、要素がセット内にあるかどうかを確認するメソッドや、セットに要素を追加および削除するメソッドなど、いくつかのメソッドを追加します。Set インターフェイスを使用して、Java コレクション フレームワークのセットに要素を追加および削除する例を次に示します。
import java.util.Set;
import java.util.HashSet;

public class SetExample {
    public static void main(String[] args) {
        // Создаем новый set
        Set<String> stringSet = new HashSet<>();

        // Добавляем несколько элементов в set
        stringSet.add("Jan");
        stringSet.add("Feb");
        stringSet.add("March");
        stringSet.add("April");

        // Проверяем наличие в set element "March"
        if (stringSet.contains("March")) {
            System.out.println("The set contains the element 'March'");
        }

        // Удаляем элемент "April" из set
        stringSet.remove("April");

        // Опять проверяем наличие element "April" в set
        if (!stringSet.contains("April")) {
            System.out.println("The set no longer contains the element 'April'");
        }
    }
}
結論:
セットには要素「3 月」が含まれています。セットには要素「4 月」は含まれなくなりました。

java.util.Queue

キューは、要素を先入れ先出し (FIFO) 順序で格納するために使用されるデータ構造です。これは、キューに追加された最初の要素が最初に削除される要素になることを意味します。Java Collection Framework でキューを使用する方法の例を次に示します。
// Creation очереди
Queue<String> queue = new LinkedList<>();

// Добавление элементов в очередь
queue.add("apple");
queue.add("banana");
queue.add("orange");
// Печатаем очередь
System.out.println("Queue: " + queue);
// Удаляем элемент из очереди
String element = queue.remove();
System.out.println("Removed element: " + element);
// Печатаем обновленную очередь
System.out.println("Queue: " + queue);
この例では、文字列キューを作成し、それに「apple」、「banana」、「orange」の 3 つの要素を追加しました。次に、キューを出力して現在の状態を確認します。次に、キューから要素を削除し、コンソールに出力します。最後に、更新されたキューを出力して、削除された要素がキュー内に存在しないことを確認します。

地図

Java Collection Framework のjava.util.Mapインターフェースは、キーを値にマップするために使用されます。これにより、要素をキーと値のペアとして保存できるようになり、マップ内の要素にアクセス、変更、反復するためのメソッドが提供されます。以下はMapインターフェースの使用例です。
// Создаем Map
 Map<String, Integer> map = new  HashMap <>();
// Добавляем элементы в Map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печать Map
 System.out.println("Map: " + map);
// Получаем meaning для определенного ключа
int  value  = map.get( "banana" );
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из Map
map.remove("orange");
// Печать обновленной карты
 System.out.println( "Map: " + map);
この例では、3 つの要素を追加して文字列と整数のマップを作成します。「apple」は 1 に一致、「banana」は 2 に一致、「orange」は 3 に一致します。次に、マップを印刷して、その現在の意味を確認します。その後、「バナナ」キーの値を取得し、それをコンソールに出力します。最後に、「オレンジ」のキーと値のペアをマップから削除し、更新されたマップを印刷して、削除された要素が存在しないことを確認します。

クラス

クラスは、コレクション インターフェイスの具体的な実装です。これは、フレームワーク内のインターフェイスによって定義される一般的な動作と操作の特定の実装を提供します。
  • ArrayList :サイズ変更可能な配列を備えたListインターフェイスの実装。
  • LinkedList : 二重リンク リスト、 List インターフェイスDequeインターフェイスの実装。
  • HashSet :ストレージにハッシュ テーブルを使用するSetの実装。
  • TreeSet :ストレージにツリーを使用するSetの実装。
  • HashMap :ストレージにハッシュ テーブルを使用するMapの実装。
上記のリストは、Java Collection Framework で最も一般的に使用されるクラスの 1 つです。それでは、これらのクラスの詳細な説明を見てみましょう。

配列リスト

Java コレクションのjava.util.ArrayListクラスは、サイズ変更可能な要素の配列をリストに格納するために使用されます。これは、配列を使用して要素を格納し、リスト内の要素へのアクセス、変更、反復処理を行うための効率的なメソッドを提供する、広く使用されているjava.util.Listインターフェースの実装です。java.util.ArrayListクラスは、その要素への高速なランダム アクセスを提供しますが、ランダムな位置での挿入と削除は遅くなります。以下は、 Java Collection Framework での ArrayListクラスの使用例です。
// Создаем array list
List<String> list = new ArrayList<>();
// Добавляем элементы в array list
list.add("qa");
list.add("devops");
list.add("dev");
// Печатаем array list
System.out.println("Array list: " + list);
// Доступ к элементу по определенному индексу
String element = list.get(1);
System.out.println("Element at index 1: " + element);
// Удаление element из the array list
list.remove(1);
// Print the updated array list
System.out.println("Array list: " + list);
ご覧のとおり、文字列の配列を作成し、それに「qa」、「devops」、「dev」の 3 つの要素を追加しました。次に、配列リストを印刷して、現在の状態を確認しました。この後、インデックス 1 の要素にアクセスし、それをコンソールに出力します。最後に、インデックス 1 の要素を配列リストから削除し、更新された配列リストを出力して、削除された要素がリストに存在しないことを確認します。

リンクリスト

Java Collection Framework のjava.util.LinkedListクラスは、AbstractListクラスを継承し、List インターフェイスDequeインターフェイスを実装します。これは、リストの先頭と末尾の要素を追加、削除、アクセスするための効率的な方法を提供します。このクラスは、二重リンク リストを使用して要素を格納するListインターフェイスの実装でもあります。任意の位置での挿入と削除は高速ですが、要素へのランダム アクセスは低速です。Java Collection Framework で LinkedListクラスを使用する方法の例を次に示します。
// Создаем linked list
List<String> list = new LinkedList<>();
// Добавляем элементы в linked list
list.add("selenium");
list.add("cypress");
list.add("playwright");
// Печатаем linked list
System.out.println("Linked list: " + list);
// Добавляем элемент в начало списка
list.add(0, "webdriver.io");
// Печатаем обновленный linked list
System.out.println("Linked list: " + list);
// Удаляем первый элемент в списке
list.remove(0);
// Еще раз печатаем обновленный linked list
System.out.println("Linked list: " + list);
この例では、文字列のリンクされたリストを作成し、それに「selenium」、「cypress」、「playwright」の 3 つの要素を追加しました。次に、リンクされたリストを印刷して、現在の状態を確認します。次に、要素「webdriver.io」をリストの先頭に追加し、更新されたリンク リストを出力します。最後に、リストから最初の要素を削除し、更新されたリンク リストを再度出力して、削除された要素がリストに存在しないことを確認します。

ハッシュセット

Java Collection Framework のjava.util.HashSetクラスは、一意の要素のコレクションをセットに格納するために使用されます。これは、java.util.Setインターフェイスのハッシュ テーブル ベースの実装を提供します。また、挿入、削除、検索も高速に行えますが、要素の順序は保持されません。以下は、 Java Collection Framework での HashSetクラスの使用例です。
// Создаем hash set
Set<String> set = new HashSet<>();

// Добавляем элементы в hash set
set.add("rose");
set.add("lily");
set.add("lotus");
// Попытка добавить повторяющийся элемент
set.add("rose");
// Печатаем hash set
System.out.println("Hash set: " + set);
// Удаляем элемент из hash set
set.remove("lily");
// Печать обновленного hash set
System.out.println("Hash set: " + set);
ここでは文字列のハッシュ セットを作成し、それに「バラ」、「ユリ」、「蓮」の 3 つの要素を追加しました。次に、要素「rose」を再度追加しようとしますが、ハッシュ セットでは重複が許可されていないため、要素は追加されません。この後、ハッシュ セットを出力して現在の状態を確認します。次に、要素「lily」をセットから削除し、セットの更新されたハッシュを出力して、削除された要素がセット内に存在しないことを確認します。

ツリーセット

Java Collection Framework のjava.util.TreeSetクラスは、一意の要素のコレクションを昇順でソートされたセットに格納するために使用されます。これは、要素の重複を許可せずに要素を格納するためのjava.util.Setインターフェースのツリーベースの実装を提供します。このクラスは、高速な挿入、削除、検索を提供し、自然な順序またはコンパレータに従って要素の順序を維持します。Java Collection Framework で TreeSetクラスを使用する方法の例を次に示します。
// Создаем tree set
Set<String> set = new TreeSet<>();

// Добавляем элементы в tree set
set.add("apple");
set.add("banana");
set.add("orange");
// Попытка добавить повторяющийся элемент
set.add("apple");
// Печатаем tree set
System.out.println("Tree set: " + set);
// Удаляем элемент из tree set
set.remove("banana");
// Печатаем обновленный tree set
System.out.println("Tree set: " + set);
この例では、文字列のツリー セットを作成し、それに「apple」、「banana」、「orange」の 3 つの要素を追加します。次に、「リンゴ」要素を再度追加しようとしますが、ツリー セットでは重複が許可されていないため、追加されません。この後、ツリーセットを印刷して現在の状態を確認します。ツリーセットは昇順にソートされているため、要素は「リンゴ」、「バナナ」、「オレンジ」の順に出力されます。次に、要素「バナナ」をセットから削除し、更新されたツリー セットを印刷して、削除された要素がセット内に存在しないことを確認します。

ハッシュマップ

Java Collection Framework のjava.util.HashMapクラスは、キーと値のマッピングをマップに保存するために使用されます。これは、java.util.Mapインターフェースのハッシュ テーブル ベースの実装を提供し、要素をキーと値のペアとして保存できるようにします。このクラスは高速な挿入、削除、検索を提供しますが、要素の順序は保持されません。Java Collection Framework で HashMapクラスを使用する方法の例を次に示します。
// Создаем hash map
Map<String, Integer> map = new HashMap<>();

// Добавляем элементы в hash map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печатаем hash map
System.out.println("Hash map: " + map);
// Получаем meaning для определенного ключа
int value = map.get("banana");
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из hash map
map.remove("orange");
// Печатаем обновленный hash map
System.out.println("Hash map: " + map);
この例では、整数文字列のハッシュ マップを作成し、それに 3 つの要素を追加します。「apple」は 1 に一致し、「banana」は 2 に一致し、「orange」は 3 に一致します。次に、ハッシュ マップを印刷して現在の状態を確認します。その後、「バナナ」キーの値を取得し、それをコンソールに出力します。最後に、「オレンジ」のキーと値のペアをハッシュ マップから削除し、更新されたハッシュ マップを出力して、削除された要素がそこに存在しないことを確認します。

結論

Java コレクション フレームワークは、Java プログラミング言語でオブジェクトのコレクションを表現および操作するための標準的な方法を提供するクラスとインターフェイスのセットです。これにより、開発者/テスターは一貫した効率的な方法でオブジェクトのコレクションを操作できるようになります。このフレームワークは、コレクション内の項目を保存、アクセス、管理するためのメソッドを提供し、アプリケーションの要件に応じて異なるコレクションの実装を簡単に切り替えることができます。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION