JavaRush /Java Blog /Random-JA /二重リンク LinkedList の独自の実装、ディープ クローン作成。
alexnjc
レベル 31

二重リンク LinkedList の独自の実装、ディープ クローン作成。

Random-JA グループに公開済み
タスクは、単一または二重にリンクされたオブジェクトのリストの独自の実装を作成することですが、LinkedList タイプの標準実装を使用することはできません。このリストのディープ クローン作成メソッドを記述し、リーフがどのようにクローンされるかを確認します。クラス コンストラクターを使用してコピーを作成することはできません。リストのコピーから要素を削除する場合、元のリストは変更されてはなりません。つまり、コピーは互いに完全に独立している必要があります。どのような方法が最適でしょうか? 大量のコードを書きましたが、ディープクローン作成以外はすべて機能しているようです。リストを変更すると多くの不具合が発生します:-( //List as FILO stack public class MyLinkedList implements Cloneable, Serializable { private Node objects; // top of stack private Node first; // bottom of stack ... 内部クラス Node // FILO class Node implements Cloneable { private Object o; private Node next; private Node prev; public Node(Object o) { if (o !=null){ this.o = o; next = null; prev = null; System.out.println("First element Node created!"); System.out.println("o= "+o +" next= " + next+" prev= "+ prev); } else throw new IllegalArgumentException("Null element not allowed here!"); } public Node(Object o, Node next) { if (o == null) throw new IllegalArgumentException("Null element not allowed here!"); this.o = o; if (next != null) { this.next = next; this.prev = null; this.next.setPrev(this); System.out.println("element Node created!"); System.out.println("o= "+o +" next= " + next+" prev= "+ prev); } else System.out.println("next == null ?!!"); } public Object getO () { return o; } public Node getNext(){ return next;} public Node getPrev(){ return prev;} public void setO (Object o) { this.o = o;} public void setNext(Node next) { this.next = next;} public void setPrev(Node prev) { this.prev = prev;} ...
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION