== オブジェクトをつなぐメソッド == オブジェクトを沢山つなげることができました。 うまい方法を使うと、新しいオブジェクトを先頭に追加する方が楽にできます。 ---- === 例1 === 変数aが、いくつかつながったオブジェクトを参照しており、 変数tempが1つのオブジェクトを参照している場合です。 . {{attachment:chain30.png}} 赤矢印でしめしたようにつなぎ変えることで、1つのオブジェクトを追加できます。 . {{attachment:chain31.png}} . {{attachment:chain32.png}} この処理はこのように書けます。 {{{ temp.next = a; a = temp; }}} ---- === 例2 === 赤矢印でしめした位置に追加する場合。 . {{attachment:chain33.png}} 追加したい位置の直前にあるオブジェクトを参照できなければなりません。 変数pがその位置を指しているとします。 . {{attachment:chain34.png}} pが指しているオブジェクトの直後に、 tempが示している1つのオブジェクトを追加する処理はこのように書けます。 {{{ temp.next = p.next; p.next = temp; }}} ---- === 例3 === 例2の処理はchainが沢山つながった途中をpが指している場合でも正しく動作します。 . {{attachment:chain35.png}} ---- === オブジェクトをつなぐメソッド === 例2、例3と同じ処理をするメソッドを作ります。 このような形で呼び出されるものとします。 {{{#!java public static void main(String[] args) { Chain a; ... a.add(new Chain()); ... } }}} Chain型の引数を1つとるので、メソッドはこのような形になります。 {{{#!java void add(Chain c) { } }}} mainメソッドから上のように呼び出された場合は * aの値がthisに * 引数の値がcに 対応付けられて本体が実行されるので、図に示すような処理を記述すればよい。 . {{attachment:chain36.png}} . {{attachment:chain37.png}}