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

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

王林
王林転載
2023-05-17 08:31:051006ブラウズ

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 までご連絡ください。