「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java コレクション フレームワーク

Java コレクション フレームワーク

2024 年 11 月 7 日に公開
ブラウズ:100

Que Java Collection Framework とは何ですか?

Ans Java Collection フレームワークは、最も一般的に使用されるデータ構造とアルゴリズムの 最適化 実装のセットを提供する強力な組み込みライブラリです。Java アプリケーションの構築や実際のソフトウェア開発の解決に広く利用されています。課題。


Java コレクション フレームワークの利点は何ですか?

Ans Java Collection フレームワークの利点のいくつかは次のとおりです。

  1. 統一アーキテクチャ : すべてのデータ構造は、共通の実装の感覚を提供する反復可能インターフェイスやコレクション インターフェイスなどのインターフェイスから派生します。
  2. 使いやすさ : 事前に構築されたデータ構造とアルゴリズムを提供することで、開発プロセスを簡素化します。開発者は、一般的に使用されるデータ構造や標準アルゴリズムを手動で実装および最適化するのではなく、ビジネス ロジックに集中できます。
  3. 柔軟性 : 基礎となるデータ構造を変更したい場合、データ構造の変更によってデータの取得とアクセス パターンが (ほとんどの場合) 変更されることを心配することなく、簡単に変更できます。
  4. スレッド セーフティ : Java はさまざまなスレッドでプロセスを個別に実行する方法を提供するため、Java Collection Framework はマルチスレッド環境およびシングル スレッド アプリケーションで実行するためのさまざまなクラスを提供します。

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

JAVA COLLECTION FRAMEWORK


反復可能なインターフェイス
Java の Iterable インターフェイスは、コレクション フレームワークの重要なコンポーネントです。これは、反復処理できるすべてのコレクション型のルート インターフェイスです。 Iterable インターフェイスを実装すると、オブジェクトを「for-each ループ」 (拡張 for ループとも呼ばれます) のターゲットにすることができます。
また、この反復可能なインターフェイスを実装するすべてのデータ構造の前方反復に使用できる反復子オブジェクトも提供します。

FOR EACH LOOP (拡張 FOR LOOP) を使用した例

内部的に ArrayList はリストを実装し、リスト インターフェイスはコレクション インターフェイスを拡張し、コレクション インターフェイスは反復可能インターフェイスを拡張します。

List list = new ArrayList();//データ構造の宣言
list.add("Java");//要素を追加
list.add("Collections");//要素を追加
list.add("フレームワーク");//要素を追加
for (String element : list) {//拡張 for ループ
を使用した反復処理 System.out.println(要素);
}

ITERABLE オブジェクトを使用した例

Iterator iterator = list.iterator();
while (iterator.hasNext()) {
文字列要素 = iterator.next();
System.out.println(要素);
}

そのため、反復可能インターフェイスを実装し、next、hasNext、remove メソッドをオーバーライドするカスタム反復可能を作成できます。以下は同じ例です。

import java.util.Iterator;
class CustomIterable implements Iterable {
    private final int[] numbers = {1, 2, 3, 4, 5};

    @Override
    public Iterator iterator() {
        return new Iterator() {
            private int index = 0;
            private int lastReturnedIndex = -1;

            @Override
            public boolean hasNext() {
                return index 



注記 :

  1. Java のイテレータはフェイルファストです。これは、反復中にコレクションが変更された場合 (イテレーター自身の Remove() メソッドによる場合を除く)、ConcurrentModificationException.
  2. がスローされることを意味します。
  3. remove() メソッドは要素を削除することしかできず、next() の呼び出しごとに 1 回だけ呼び出す必要があります。それ以外の場合は、IllegalStateException.
  4. がスローされます。

コレクションインターフェイス

これは、データ構造と内部実装を柔軟にするためのインターフェイスです。主にすべてのクラスはこのインターフェイスを間接的に実装しており、コレクション参照に割り当てられたオブジェクトを変更するだけで実装を変更できます。

//ArrayList
Collection c = new ArrayList():
c.add(1);
c.add(2);
c.contains(1);

Collection c1 = new LinkedList():
c1.addAll(c);//Array added to a linked list

/*What if i dont want arraylist but now i want a priority queue for applying efficient algorithms such as findmax and find min*/
//Just Change Object - SIMPLE!
Collection c = new **PriorityQueue**():
c.add(1);
c.add(2);
c.contains(1);

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

  1. int size : コレクションのサイズを返します。
  2. boolean isEmpty : コレクションが空の場合は true を返します。
  3. boolean contains(Object o) : オブジェクト o がコレクションに存在する場合は true を返します。
  4. Iterator iterator() : コレクションを指すイテレータを返します。
  5. Object[] toArray() : コレクションを Object 型の配列に変換します。
  6. T[] toArray(T[] a) : コレクションのすべての要素を含む配列を返します。返される配列の実行時型は、指定された配列の型です。
  7. boolean add(E e) : 要素 e をコレクションに追加します。操作が成功した場合は true を返します。
  8. boolean Remove(Object o) : コレクションからオブジェクト o を削除します。操作が成功した場合は true を返します。
  9. boolean containsAll(Collection> c) : 両方のコレクション内のすべての要素が同じ場合に true を返します。操作が成功した場合は true を返します。 10.boolean addAll(Collection extends E> c) : 両方のコレクションのすべての要素を追加します。操作が成功した場合は true を返します。
  10. boolean RemoveAll(Collection> c) : 呼び出し元のコレクションからコレクション c の要素を削除します。操作が成功した場合は true を返します。
  11. boolean restartAll(Collection> c) : コレクション c.
  12. に存在する要素のみを保持します。
  13. void clear() : コレクションからすべての要素をクリアします。

コレクション クラスを実装することで、上記のメソッドをオーバーライドしてカスタム コレクションを作成できます。以下は同じ例です。

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.NoSuchElementException;

public class CustomCollection implements Collection {
    private final ArrayList list = new ArrayList();

    @Override
    public int size() {
        return list.size();
    }

    @Override
    public boolean isEmpty() {
        return list.isEmpty();
    }

    @Override
    public boolean contains(Object o) {
        return list.contains(o);
    }

    @Override
    public Iterator iterator() {
        return new Iterator() {
            private int index = 0;

            @Override
            public boolean hasNext() {
                return index  T[] toArray(T[] a) {
        return list.toArray(a);
    }

    @Override
    public boolean add(E e) {
        return list.add(e);
    }

    @Override
    public boolean remove(Object o) {
        return list.remove(o);
    }

    @Override
    public boolean containsAll(Collection> c) {
        return list.containsAll(c);
    }

    @Override
    public boolean addAll(Collection extends E> c) {
        return list.addAll(c);
    }

    @Override
    public boolean removeAll(Collection> c) {
        return list.removeAll(c);
    }

    @Override
    public boolean retainAll(Collection> c) {
        return list.retainAll(c);
    }

    @Override
    public void clear() {
        list.clear();
    }
}


リストインターフェイス

Java の List インターフェイスは Java Collections Framework の一部であり、Collection インターフェイスを拡張します。これは、位置アクセス、要素の重複、およびその要素の反復を可能にする、順序付けられたコレクション (シーケンスとも呼ばれます) を表します。 List インターフェイスは、ArrayList、LinkedList、Vector、Stack などのいくつかのクラスによって実装されます。

リスト インターフェイスの主な特徴:

  1. 順序付きコレクション: リストは要素の挿入順序を保持します。つまり、要素はインデックスによってアクセスできます。
  2. 重複を許可: 重複を許可しないセットとは異なり、リストには重複した要素を含めることができます。
  3. 位置アクセス: リスト内の要素は、インデックスによってアクセス、追加、削除できます。
  4. 反復: List インターフェイスでは、拡張された for ループと、Iterator または ListIterator を使用した反復が可能です。

リスト インターフェイスの一般的に使用されるメソッド:
リスト インターフェイスはコレクション インターフェイスを拡張するため、すべてのコレクション インターフェイス メソッドもリスト インターフェイスによって実装されます。

  1. void add(int index, E element): 指定された要素 E をこのリストの指定されたインデックスに挿入します。
  2. E get(int index): このリスト内の指定された位置にある要素を返します。
  3. E Remove(int Index): このリスト内の指定された位置にある要素を削除します。
  4. E set(intindex, E element): このリスト内の指定された位置にある要素を指定された要素に置き換えます。
  5. int indexOf(Object o): 指定された要素が最初に出現したインデックスを返します。リストにその要素が含まれていない場合は -1 を返します。
  6. int lastIndexOf(Object o): 指定された要素が最後に出現したインデックスを返します。リストに要素が含まれていない場合は -1 を返します。
  7. List subList(int fromIndex, int toIndex): 指定された fromIndex (これを含む) と toIndex (これを含まない) の間のこのリストの部分のビューを返します。
import java.util.ArrayList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("Java");
        list.add("Collections");
        list.add("Framework");

        // Accessing elements by index
        System.out.println("First Element: "   list.get(0));

        // Removing an element by index
        list.remove(1);
        System.out.println("After Removal: "   list);

        // Updating an element
        list.set(1, "Updated Element");
        System.out.println("Updated List: "   list);

        // Using a sublist
        List sublist = list.subList(0, 1);
        System.out.println("Sublist: "   sublist);
    }
}

リリースステートメント この記事は次の場所に転載されています: https://dev.to/harsh_khanpara_e78fd42c5a/java-collection-framework-4fm8?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3