Metodin List.insertElementLast toteutus

Metodin tehtävänä on muuttaa lista (O1, O2, ..., On) ja parametrina annettu olio element listaksi (O1, O2, ..., On, element). Metodi on määritelty seuraavasti:

(1)     public void insertElementLast(Object element) {
(2)        List list = this;
(3)        while (list.next != null) {
(4)            list = list.next;
(5)        }
(6)        list.next = new List(element, null);
(7)     }

Tarkastelemme askel askelelta, miten metodi toimii. Käytämme yksinkertaista laatikko-nuoli-merkintää olioille ja muuttujille. Kukin olio esitetään laatikkona, joka sisältää olion tyypin sekä muuttujien arvot. Muuttujat ja olioiden sisältämät viittaukset (joilla on merkitystä metodin toiminnan kannalta) toisiin olioihin esitetään nuolina.

Kukin listan solmu sisältää muuttujassa data viittauksen johonkin listan alkioon ja muuttujassa next viittauksen listan seuraavaan solmuun. Koska metodin insertElementLast toiminta ei riipu muuttujan data arvosta, esitetään listan solmut laatikkoina, joissa on sisällä jokin nimi Oi, joka tarkoittaa viittausta johonkin listaan sisältyvään olioon sekä viittaus seuravaan listan solmuun.


(1)     public void insertElementLast(Object element) {

Metodin alussa this viittaa parametrina annetun listan ensimmäiseen solmuun. Lista sisältää alkiot (O1, O2, ..., On).


(2)        List list = this;

Rivin 2 suorituksen jälkeen muuttuja list osoittaa samaan listan solmuun kuin this. Muuttujaa list käytetään parametrina annetun listan läpikäyntiin.


(3)        while (list.next != null) {

Rivillä 3 list osoittaa johonkin listan solmuun (ensimmäisellä kerralla samaan solmuun kuin this, myöhemmin muihin listan olioihin):

meillä on kaksi eri vaihtoehtoa:

a) Jos list.next != null, eli

emme oli listan lopussa, joten menemme riville 4.

b) Jos list.next == null, eli

lista on lopussa, joten menemme riville 6


(4)            list = list.next;

Rivilla 4 tiedämme, että list.next != null, joten voimme siirtyä listassa askelen eteenpäin:

Tämän jälkeen jatkamme riviltä 3.


(6)        list.next = new List(element, null);

Silmukan loputtua rivillä 6 tiedämme, että list.next == null. Nyt voimme lisätä uuden solmun listan loppuun

Lopputulos on siis, että lista sisältää alkiot (O1, O2, ..., On, element).