検索
ホームページJava&#&チュートリアルJava で ArrayList とシーケンス リストを定義および実装する方法

    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 サイトの他の関連記事を参照してください。

    声明
    この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
    高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

    この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

    適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

    この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

    カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

    この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

    キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

    この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

    Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

    Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    強力な PHP 統合開発環境

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 Linux 新バージョン

    SublimeText3 Linux 新バージョン

    SublimeText3 Linux 最新バージョン

    MantisBT

    MantisBT

    Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。