Java: iteraattorit

Collection-rajapinnan toteuttavat luokat (mm. linkitetty lista) mahdollistavat listan läpikäynnin iteraattorin avulla. List-tyyppiset mahdollistavat myös ListIterator-rajapinnan käytön, jolla voi selata listaa eteen ja taakse päin.

Lista iteraattorin käyttöönotto vaatii paketin java.util.ListIterator tuomista.

// luodaan lista iteraattori henkiloListasta
ListIterator<Henkilo> iter = henkiloLista.listIterator();
		
System.out.println("\nSilmukoidaan listan alusta loppuun:");
	while(iter.hasNext()) {
		System.out.println((Henkilo) iter.next());
	}
		
System.out.println("\nSilmukoidaan listan lopusta alkuun:");
	while(iter.hasPrevious()) {
		System.out.println((Henkilo) iter.previous());
	}

Iteraattori tarjoaa kahden edellä esitetyn metodin lisäksi metodin remove() jonka avulla voi poistaa olion listalta.

Oheisessa esimerkkikoodissa luodaan olioita Henkilot jotka sijoitetaan linkitettyyn listaan jota taas käydään läpi molempiin suuntiin iteraattorin avulla. Koodi on tehty Eclipse projektina. IteratorEsimerkki.zip

Tietojen käsittelyn perusteita: pino ja jono

Pino (stack) on nimensä mukaisesti tietorakenne jossa viimeisenä lisätty tieto noudetaan ensimmäisenä. Jos esimerkiksi pinoamme lautasia, niin viimeisenä pinon päällimmäiseksi laitettu lautanen on se jonka me ensimmäisenä otamme pinosta pois. Lautaspinon tavoin, myös tietorakenteessa käytäntö on, että jos otamme päällimmäisen datan pinosta pois, sen uudelleenkäyttö vaatii datan sijoittamista takaisin pinoon. Pinosta puhutaan myös LIFO-tietorakenteena, (Last-In, First-Out).

Jono (queue) taasen tunnetaan FIFO-tietorakenteena (First-In, First-Out), jossa siis ensimmäisenä sijoitettu data on myös ensimmäisenä saatavilla. Vertauksena vaikkapa kaupan kassajono. Ensimmäinen asiakas saa maksaa ostoksena ennen muita ja pääsee lähtemään kotimatkalle. Muut asiakkaat odottavat sen mukaisesti, missä järjestyksessä he ovat kassajonoon saapuneet.

Normaalien kassajonokäytäntöjen mukaisesti, jos asiakas palaa kauppaan vielä jotain hakemaan, joutuu hän uudestaan jonoon odottamaan omaa vuoroaan.

Tosiasiassahan lista itsessään ei sisällä mainittua dataa vaan viitteen siihen, on helpompi esittää asia kuten sen yllä tein.

Tietojen käsittelyn perusteita: järjestetty lista

Järjestetty lista (ordered list) poikkeaa linkitetystä listasta merkittävästi. Siinä missä linkitetyssä listassa pitää lähteä aina alusta (tai lopusta jos on kahteen suuntaan linkitetty lista) hakemaan tietoa, niin järjestetyssä listassa haku voidaan kohdentaa avaimen perusteella suoraan oikeaan elementtiin.
Jatka lukemista ”Tietojen käsittelyn perusteita: järjestetty lista”

Tietojenkäsittelyn perusteita: tietorakenteet – linkitetty lista

Linkitetty lista (linked list) on yksi yleisimmistä tietorakenteista ja se koostuu yhdestä tai useammasta elementistä, joissa on normaalin datan lisäksi ns. linkki seuraavaan elementtiin. Tietojenkäsittelyssä puhutaan usein myös solmuista. Kahteen suuntaan linkitetyssä listassa elementeillä on datan lisäksi linkki seuraavaan ja edelliseen elementtiin. Tosiasiassahan lista itsessään ei sisällä mainittua dataa vaan viitteen siihen, on helpompi esittää asia kuten sen yllä tein.

Tavallisesti linkitetystä listasta voidaan hakea tietty elementti vain liikkumalla ensimmäisestä elementistä kohti listan loppua elementti kerrallaan. Kahdensuuntaisessa listassa voidaan aloittaa alusta tai lopusta ja vaihtaa myös suuntaa.
Jatka lukemista ”Tietojenkäsittelyn perusteita: tietorakenteet – linkitetty lista”