ホームページ > Java > &#&チュートリアル > Java でカスタム LinkedList クラスを実装する方法

Java でカスタム LinkedList クラスを実装する方法

王林
リリース: 2023-05-17 08:31:05
転載
1012 人が閲覧しました

1. LinkedList と ArrayList

-- LinkedList ArrayList
#Contact これらはすべて List の実装クラスであり、すべて java.util パッケージの下にあります
実装原理 リンクされたリストによる操作データ 配列によるデータの操作
いつ使用するか 変更と確認 追加と削除

2. LinkedList クラスのカスタマイズ (一方向リンク リスト)

#1. 実装のアイデア

LinkedList クラスは ArrayList クラスとは異なります。ポインターとノードの操作を通じてリンク リストを変更および確認します

LinkedList クラスをカスタマイズする手順

1. 属性が Node タイプのノード ノードと Object タイプのデータであるノード クラスを作成します

2. ノード クラスのパラメーター化された構築メソッドとパラメーターなしの構築メソッドを作成する

3. 独自の LinkedList クラスを作成して List インターフェイスを実装する

4. 新しいノード オブジェクトをLinkedList クラスを作成し、コレクションを表すサイズを宣言します。Element

5. size()、get()、および isEmpty() のメソッドを実装します (ArrayList と同様)

6. 書き込みます。仮パラメータを使用した add() メソッド

7. 2 つの仮パラメータを使用した add() メソッドを作成します

#8. コードをテストするテスト クラスを作成します

#2。ノード ノード クラス

属性は 2 つあります: Node と data

ノードのタイプは Nodeです

データのタイプは Object です (受信データの特定のタイプを決定します)

package MyLinkedList;

public class Node {
    // 定义数据
    Object data;
    // 定义下一结点
    Node next;

    public Node(Object data, Node next) {
        this.data = data;
        this.next = next;
    }

    public Node() {
    }
}
ログイン後にコピー

3.size()、isEmpty()、get(intindex)Java でカスタム LinkedList クラスを実装する方法

size() メソッド

@Override
    public int size() {
        return size;
    }
ログイン後にコピー

isEmpty()メソッド

 @Override
    public boolean isEmpty() {
        return size == 0;
    }
ログイン後にコピー

get(intindex)メソッド

 @Override
    public Object get(int index) {
        Node p = node;
        for (int i = 0; i < index; i++) {
            p = p.next;
        }

        return p.data;
    }
ログイン後にコピー

4,add(Object o)

受信したデータを次の場所に挿入します。 end

@Override
    public boolean add(Object o) {
        add(size, o);
        return true;
    }
ログイン後にコピー

5, add(intindex,Object element)

 @Override
    public void add(int index, Object element) {
        // 找到需要插入的位置的结点
        Node p = node;
        for (int i = 0; i < index; i++) {
            p = p.next;
        }
        // 创建新结点
        Node node1 = new Node();

        // 将数据存入集合中
        node1.data = element;

        // 让node1的指针指向下一结点
        node1.next = p.next;

        // 确定node1的直接前驱结点
        p.next = node1;

        // 更新size
        size++;
    }
ログイン後にコピー

6, test classJava でカスタム LinkedList クラスを実装する方法

ループが開始される理由1 から: LinkedList クラスの先頭にオブジェクトが作成されるため、0 から開始すると、印刷結果が null

package MyLinkedList;

public class test {
    public static void main(String[] args) {
        LinkedList linkedList = new LinkedList();
        linkedList.add("111");
        linkedList.add("222");
        linkedList.add("333");
        linkedList.add("444");
        for (int i = 1; i < linkedList.size(); i++) {
            System.out.println(linkedList.get(i));
        }
        System.out.println("==================");
        linkedList.add(2,999);
        for (int i = 1; i < linkedList.size(); i++) {
            System.out.println(linkedList.get(i));
        }

    }
}
ログイン後にコピー
であることがわかります。

以上がJava でカスタム LinkedList クラスを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート