ホームページ  >  記事  >  Java  >  Java で ArrayList とシーケンス リストを定義および実装する方法

Java で ArrayList とシーケンス リストを定義および実装する方法

WBOY
WBOY転載
2023-05-18 14:04:46736ブラウズ

    1. 線形テーブル

    定義

    線形テーブルは、最も基本的かつ単純で、最も一般的に使用されるデータ構造です。同じ特性を持つ n 個のデータ要素を含む有限シーケンスは線形リストと呼ばれ、データ構造の一種です。

    一般的な線形リスト: シーケンシャル リスト、リンク リスト、スタック、キュー...

    線形リストは論理的に線形な構造、つまり連続した直線です。線形テーブルの物理的な記憶形式は通常、配列またはリンク リスト構造ですが、必ずしも連続的であるとは限りません。

    特徴

    • #セット内には「最初の要素」が 1 つだけ存在する必要があります。

    • セットには「最後の要素」が 1 つだけ存在する必要があります。

    • 最後の要素を除き、すべての要素には一意のサクセサ (サクセサ) があります。

    • 最初の要素を除き、すべての要素には一意の先行要素 (先行要素) があります。

    2. シーケンス テーブル

    定義

    通常、配列の形式で格納される線形構造はシーケンス テーブルと呼ばれ、データ要素が格納されます。連続したアドレスを持つ物理メモリセル内で順番に。アレイ上のデータの追加、削除、確認、変更を完了します。

    実装

    まず、データを保存する配列を作成する必要があります。

    Java で ArrayList とシーケンス リストを定義および実装する方法

    注: 便宜上、最初に整数配列を作成したため、さまざまな型に適切に適応するために、ここでは使用していない汎用配列を作成できます。 。 書きました。

    Java で ArrayList とシーケンス リストを定義および実装する方法

    #次のステップは、シーケンス テーブルに対してさまざまな操作を実行することです。例: 基本的な CURD、シーケンス テーブルの印刷、シーケンス テーブルの長さの取得、シーケンス テーブルのクリアなど。

    配列の印刷

    これは配列であるため、配列を走査して直接印刷するだけです

    Java で ArrayList とシーケンス リストを定義および実装する方法

    新しい要素を追加します

    要素を追加する際には、配列がいっぱいかどうかを考慮する必要があるため、判断する必要があり、配列の領域がいっぱいの場合は、拡張する必要があります。さらに、この位置が合法であるかどうかも判断する必要があります。

    スペースがいっぱいかどうかを判断する方法

    Java で ArrayList とシーケンス リストを定義および実装する方法

    ここでは、コードを次のように簡略化します。 #ご希望の場合 展開の場合、展開完了後、配列リストは連続構造のため、pos位置に新たな要素を追加すると、pos位置以降の要素が順番に戻ります。この方法でのみ新しい要素を追加できます。

    Java で ArrayList とシーケンス リストを定義および実装する方法

    注: 拡張後、CAPACITY と usedSize のサイズを変更する必要があります。

    特定の要素が含まれているかどうかを判断する

    Java で ArrayList とシーケンス リストを定義および実装する方法ここでは、現時点で配列が空であるかどうかを考慮する必要があります。

    その後は、引き続き配列の直接走査が行われます。

    Java で ArrayList とシーケンス リストを定義および実装する方法#要素の検索

    ここでは null 操作も必要です。

    Java で ArrayList とシーケンス リストを定義および実装する方法

    pos 位置の要素を取得する

    配列が空で pos が不正な状況が発生する可能性があるため、判断が必要です。

    ここでは手動で例外をスローしていますが、他には何も書いていません。 Java で ArrayList とシーケンス リストを定義および実装する方法

    pos 位置の値を変更します

    Java で ArrayList とシーケンス リストを定義および実装する方法削除操作

    特定の位置にある要素を削除しますPosition を使用すると、その背後にある要素で直接カバーして削除を実現できます。

    Java で ArrayList とシーケンス リストを定義および実装する方法

    #シーケンス テーブルの長さの取得

    #シーケンス テーブルのクリア

    Java で ArrayList とシーケンス リストを定義および実装する方法

    次の操作は比較的簡単なので、詳細は説明しません。

    3. ArrayList

    はじめに:

    コレクション フレームワークでは、ArrayList は List インターフェイスを実装する通常のクラスであり、具体的なフレームワーク図は次のとおりです:

    Java で ArrayList とシーケンス リストを定義および実装する方法

    [説明]

    1. ArrayList は RandomAccess インターフェイスを実装しており、ArrayList がランダム アクセスをサポートしていることを示します。

    2. ArrayList は Cloneable インターフェイスを実装し、ArrayList を複製できることを示します。

    3. ArrayList は Serializable インターフェイスを実装し、ArrayList がシリアル化をサポートしていることを示します。

    4. Vector とは異なり、ArrayList はスレッドセーフではなく、単一スレッドで使用できます。マルチスレッドでは、Vector または CopyOnWriteArrayList を選択できます。

    5. ArrayList の最下層は連続空間で動的に展開可能な動的型の配列リストです。

    #使用方法

     public static void main(String[] args) {
            // ArrayList创建,推荐写法
            // 构造一个空的列表
            List<Integer> list1 = new ArrayList<>();
     
            // 构造一个具有10个容量的列表
            List<Integer> list2 = new ArrayList<>(10);
            list2.add(1);
            list2.add(2);
            list2.add(3);
     
            // list2.add("hello"); // 编译失败,List<Integer>已经限定了,list2中只能存储整形元素
            // list3构造好之后,与list中的元素一致
            ArrayList<Integer> list3 = new ArrayList<>(list2);
     
            // 避免省略类型,否则:任意类型的元素都可以存放,使用时将是一场灾难
            List list4 = new ArrayList();
            list4.add("111");
            list4.add(100);
        }

    いくつかの一般的な方法

    方法説明boolean add(E e)End insert evoid add(intindex, E element)will e はインデックス位置に挿入されますboolean addAll(Collection extends E> c)コレクション c の要素の末尾をコレクションに挿入します##Eremove(int Index)#インデックス位置要素を削除して return 最初の o添字インデックス位置要素を取得添字インデックスの位置要素を element に設定しますシーケンス テーブルをクリアしますo が線形テーブルにあるかどうかを判断します最初の o#int lastIndexOf(Object o)の添え字を返します最後の o# の添え字を返します ArrayList traversalLoop traversal
    ##boolean Remove(Object o)
    E get(intindex)
    E set(int index, E element)
    void clear()
    boolean contains(Object o)
    intindexOf(Object o)
    ##List subList(int fromIndex, int toIndex) リストの一部のインターセプト

    foreach traversal

    Java で ArrayList とシーケンス リストを定義および実装する方法##Iterator

            System.out.println("======迭代器1=========");
     
            ElementObservableListDecorator<Object> list;
            Iterator<String> it =  list.iterator();
            while (it.hasNext()) {
                System.out.println(it.next());
            }
            System.out.println("======迭代器2=========");
            ListIterator<String> it2 =  list.listIterator();
            while (it2.hasNext()) {
                System.out.println(it2.next());
            }

    シーケンス テーブルとの違い配列間:

    Java で ArrayList とシーケンス リストを定義および実装する方法

    上で述べたように、シーケンス テーブルの最下層は配列として理解できますが、配列よりも高度です。

    シーケンス テーブルは単独で拡張可能;

    シーケンス テーブルは配列の容量と要素の数を厳密に区別します。

    つまり、配列は実際には不完全なシーケンス リストです。

    シーケンス テーブルの注意:

    シーケンス テーブルでは、容量と要素数 (サイズ) という 2 つの概念を区別する必要があります。 )。

    容量は配列のサイズ (長さ) として理解でき、要素数はサイズに記録された有効な要素の数です。
    • シーケンス テーブルでは、データの格納が連続している必要があり、要素間に「隙間」があってはなりません。挿入や削除などの操作を行うと、その操作が完了した後、シーケンスリストの連続性を確認してください。

    以上がJava で ArrayList とシーケンス リストを定義および実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。