0

私はJavaでのリンクリストクラスの実装を学ぼうとしています。しかし、getメソッドを呼び出すたびに、LastNodeのコンテンツを取得します。理由がわかりません。コードは次のとおりです、

package learningLinkedLists;
import java.util.LinkedList;

public class LinkedLists {
public static void main(String[] args) {
    Dummy d = new Dummy(0);
    LinkedList<Dummy> ll = new LinkedList<Dummy>();


    d.SetData(1);
    d.printData();
    ll.add(d);


    d.SetData(2);
    d.printData();
    ll.add(d);

    d.SetData(3);
    ll.add(d);

    System.out.println(ll);
    System.out.println(ll.get(1).data);
    System.out.println(ll.get(0).data);
    System.out.println(ll.size());
}

}

私が得ている出力は、

1
2
[learningLinkedLists.Dummy@3b061299,learningLinkedLists.Dummy@3b061299,
learningLinkedLists.Dummy@3b061299]
3
3
3

クラスにデータを追加して、そのクラスのリンクリストを作成したいと思います。

前もって感謝します!

4

4 に答える 4

8

同じ出力が得られる理由は、同じものを保存し、object twice2つの異なるものを作成してからdummy objs、それらを保存するためです。

それは次のようになります

//Creating the first obj
Dummy d = new Dummy(0);
//Creating second ojj
Dummy d2 = new Dummy(0);
LinkedList<Dummy> ll = new LinkedList<Dummy>();


//Since d and d2 are now 2 different objects, a change to d would not have a impact on d2 and vice versa
d.SetData(1);
d2.SetData(2);
ll.add(d);
ll.add(d2);

System.out.println(ll.get(1).data);
System.out.println(ll.get(0).data);
于 2013-03-24T05:53:22.107 に答える
4

同じオブジェクトをリストに何度も追加してから、その値を変更しています。これが、同じ値と同じメモリアドレスが表示される理由です。

これを回避するには、さまざまなDummyオブジェクトをインスタンス化してリストに配置します。

于 2013-03-24T05:53:39.600 に答える
4

問題は、の内部状態を変更し、それを数回d追加していることです。LinkedListの新しいインスタンスを作成する必要がありますDummy

于 2013-03-24T05:53:59.073 に答える
4

最後のノードの内容は表示されていませんが、同じノード(ダミー)に値3を割り当てています。Dummyクラスの新しいインスタンスを作成し、それに値を割り当ててリストに追加します。これは機能します。

于 2013-03-24T05:56:32.240 に答える