Taulukot Jukka Juslin © Jukka Juslin 2006.

Slides:



Advertisements
Samankaltaiset esitykset
Luokkien ja olioiden käyttäminen Jukka Juslin
Advertisements

Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
18. Abstraktit tietotyypit
Koostumussuhde Jukka Juslin © Jukka Juslin.
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
Osion kaksi kertaus Jukka Juslin © Jukka Juslin.
Osavuosikatsaus Lännen Tehtaat Osavuosikatsaus
@ Leena Lahtinen Helia TIETO JA TIETOKONEOHJELMA  TIETOKONEOHJELMA KÄSITTELEE TIETOJA  TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
JavaScript (c) Irja & Reino Aarinen, 2007
© Jukka Harju, Jukka Juslin1 Java-ohjelmointi opas ammattimaiseen osaamiseen Luku 6 (osittain) Tiedostot.
Ict1td002: Ohjelmointitaito Kertaus Osio 2 - luokat - ilmentymät - viittaus- ja arvomuuttuja - ilmentymien taulukointi HAAGA-HELIA IltaTiko.
Tuloksellinen Java-ohjelmointi Luku 9 Taulukot ja perustietorakenteet
© Jukka Harju, 2005 Javan util -pakkaus •Javan util -pakkaus sisältää monia hyödyllisiä luokkia ja rajapintoja. –Kaikki ao luokat ovat pakkauksessa java.util.
Taulukot: Array Taulukko Javassa pitää aina perustaa (new)
Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille
22. Taulukot.
Rakenteinen ohjelmointi
Käännösaikaiset virheilmoitukset • Tulee silloin, kun koodissa on jotain sellaista, joka ei ole Javan syntaksin mukaista • Esim. – Syntax error, insert.
Ohjelmointitaito (ict1td002, 12 op) Syksy 2008
13. Pakkaukset.
Näytölle tulostaminen. 7.2 Sisällys System.out.println - ja System.out.print -operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden.
C-ohjelmointi, kevät 2006 Taulukot Binääritiedostot Luento
Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 4 Toistolauseet
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ VARTEN.
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap.
METATEKSTI, METADISKURSSI = tekstiä tekstistä (Minna-Riitta Luukka 1992 ja 1995) Tieteellisetkään tekstit eivät ole pelkkiä faktakokoelmia, vaan niissä.
© Jukka Harju, Jukka Juslin Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 9 Poikkeuskäsittely.
Poikkeustenkäsittely  Mitä poikkeustenkäsittely tarkoittaa?  Poikkeuksen käsitteleminen  Poikkeusluokkien hierarkia  Poikkeuksen heittäminen 1.
Toiston tekeminen Javalla  Mikä toistorakenne on?  while toistorakenne  do-while toistorakenne  for toistorakenne 1.
TAULUKKO YKSIULOTTEINEN TAULUKKO. TAULUKKO  Taulukon tarkoitus Ohjelmassa tarvitaan paljon samantyyppisiä samaan kohdealueeseen kuuluvia muuttujia Näitä.
© Jukka Harju, Jukka Juslin
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
7. Oliot ja viitteet.
Java Java on Sun Microsystems yhtiön kehittämä laaja olio-pohjainen ohjelmointikieli, joka on laitteistoriippumaton. Laitteistoriippumattomuudessa on.
Map-luokka Mikä Map on? Mapin esittely ja luonti Map-luokan metodeja Mappiin lisääminen Mapin läpikäynti Mapista poistaminen 1.
String-vertailusta ja Scannerin käytöstä (1/2)
Lännen Tehtaat Osavuosikatsaus
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
19. Olio-ohjelmointia Javalla
20. Javan omat luokat.
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
10. Abstrakti luokka Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
22. Taulukot.
Poikkeukset Yleistä Virheeseen varautuminen tarkoittaa sitä, että ohjelmoija huomioi koodia kirjoittaessaan ajonaikaisen virheen mahdollisuuden.
© Jukka Juslin1 Tiedostot Tuloksellinen Java-ohjelmointi.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
@ Leena Lahtinen Toistorakenne Ohjelmassa toistetaan tiettyjä toimenpiteitä monta kertaa peräkkäin Toisto noudattaa sille kuuluvia tarkkoja standardoituja.
Lännen Tehtaat Vuosi Tulos/osake , euroa IFRS.
@ Leena Lahtinen TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA:  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ.
© Jukka Juslin1 Osio2 Olio-ohjelmointi: Merkkijonot eli Stringit Jukka Juslin.
2. Lisää Java-ohjelmoinnin alkeita
Tiedostojen käsittely
Olioiden taulukointi Perustaulukon käyttö Luokan ilmentymät voidaan tallettaa taulukkoon samoin kuin muuttujat Esimerkki talletetaan taulukkoon opintojaksojen.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
14. Poikkeukset Sisällys Johdanto poikkeuksiin. Poikkeusten käsittely: − Poikkeusten käsittely paikallisesti. − Poikkeusten heittäminen. Exception.
Sähköpostin lähetys Java- ohjelmasta Jukka Juslin.
15. Ohjelmoinnin tekniikkaa
2. Taulukot.
17. Javan omat luokat.
Scala Collections.
7. Hyvä ohjelmointitapa..
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
2. Taulukot.
15. Ohjelmoinnin tekniikkaa
4. Luokan testaus ja käyttö olion kautta
Esityksen transkriptio:

Taulukot Jukka Juslin © Jukka Juslin 2006

Taulukot Taulukot ovat olioita, jotka auttavat meitä organisoimaan suuria määriä tietoa Seuraavassa keskitymme näihin: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti Taulukot, jotka tallettavat olioviittauksia Vaihtuvanmittaiset parametrilistat Monidimensioiset taulukot ArrayList luokka © Jukka Juslin 2006

Missä ollaan? Taulukoiden luonti ja käyttö Oliotaulukot Vaihtelevan pituiset parametrilistat Kaksiulotteiset taulukot ArrayList luokka © Jukka Juslin 2006

Koko taulukolla on yksi nimi Jokaisella arvolla on numeerinen indeksi Taulukko Taulukko on järjestetty lista arvoja pisteet Koko taulukolla on yksi nimi Jokaisella arvolla on numeerinen indeksi 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 Taulukko, jonka koko on N indeksoidaan nollasta indeksiin N-1 asti Tämä taulukko säilyttää 10 arvoa, jotka on indeksoitu 0:sta 9:ään © Jukka Juslin 2006

Taulukot Tiettyyn arvoon taulukossa viitataan käyttämällä taulukon nimeä, jota seuraa indeksin numero hakasulkeissa Esimerkiksi tämä: pisteet[2]; viittaa arvoon 94 (kolmas arvo taulukossa) Indeksi viittaa paikkaan, johon talletetaan tässä yksi int-tyyppinen arvo © Jukka Juslin 2006

Taulukot Esimerkiksi, taulukon elementtiin voidaan tallettaa arvo, elementti voidaan tulostaa tai elementtiä voidaan käyttää laskutoimituksessa: pisteet[2] = 89; pisteet[eka] = pisteet[eka] + 2; keskiarvo = (pisteet[0] + pisteet[1])/2; System.out.println (“Huippu = " + pisteet[5]); © Jukka Juslin 2006

Taulukot Arvoja, joita pidetään taulukossa, kutsutaan taulukon elementeiksi tai alkioiksi Taulukko tallettaa monta arvoa samaa tyyppiä olevia elementtejä – alkion tai elementin tyyppi Elementin tyyppi voi olla primitiivityyppi tai olioviittaus Siksi, me voimme luoda taulukon int-muuttujista, taulukon merkeistä, taulukon String luokan olioista, taulukon Kolikko olioista yms. Javassa taulukko itse on olio, joka voidaan instantioida © Jukka Juslin 2006

Taulukot Toinen tapa kuvata pisteet taulukkoa: 79 87 94 82 67 98 81 74 91 © Jukka Juslin 2006

int[] pisteet = new int[10]; Taulukkojen luonti pisteet taulukko voitaisin luoda kuten seuraavassa: int[] pisteet = new int[10]; Muuttujan pisteet tyyppi on int[] (taulukko int-arvoja) Huomaa, että tauluko tyyppinä ei määrää taulukon kokoa, vaan jokaiselle taulukkoluokan oliolle annetaan oma koko Viittausmuuttuja pisteet asetetaan osoittamaan uuteen taulukko-olioon, joka pystyy säilyttämään 10 int-tyyppistä muuttujaa © Jukka Juslin 2006

Taulukkojen luonti Muutamia muita esimerkkejä taulukon luonnista: float[] hinnat = new float[500]; boolean[] vivut; vivut = new boolean[20]; char[] koodit = new char[1750]; © Jukka Juslin 2006

Taulukkojen käyttö JDK 1.5:sen uusi iterator luokka helpottaa taulukon elementtien läpikäyntiä for (int piste : pisteet) System.out.println (piste); Me käytämme kuitenkin seuraavantyyppistä ratkaisua for (int i=0; i<pisteet.length; i++) System.out.println(pisteet[i]); © Jukka Juslin 2006

Taulukon rajojen tarkistaminen Kun taulukko on luotu, sillä on kiinitetty koko (myöhemmin kuulette kenties Vector-luokan olioista, jotka poistavat tämän rajoituksen) Indeksi, jolla viitataan taulukon elementtiin pitää kuulua taulukon rajojen sisään Siis, indeksin arvo pitää olla olla 0:sta N-1:seen Java kääntäjä heittää ArrayIndexOutOfBoundsException jos taulukon indeksin on rajojen ulkopuolella Tätä kutsutaan automaattiseksi rajojen tarkistamiseksi © Jukka Juslin 2006

Rajojen tarkistus Esimerkiksi taulukko koodit voi pitää 100 arvoa, mutta se indeksoidaan vain arvoista 0 arvoon 99 Jos laskurin arvo on 100, silloin seuraava viittaus aiheuttaa poikkeuksen heittämisen: System.out.println (koodit[laskuri]); On tyypillistä tehdä ns. off-by-one virheitä taulukkoja käytettäessä ongelma for (int index=0; index <= 100; index++) koodit[index] = index*50 + epsilon; © Jukka Juslin 2006

int pituus = pisteet.length; Rajojen tarkistus Jokaisella taulukko-oliolla on julkinen vakio nimeltään length, joka tallettaa taulukon koon Siihen viitataan taulukon nimen kautta käyttäen length-attribuuttia, ei getLength: int pituus = pisteet.length; Huomaa, että length säilyttää elementtien lukumäärää ei suurinta indeksinumeroa © Jukka Juslin 2006

Toinen taulukon luontitapa Hakasulkeet taulukon tyypissä voidaan laittaa taulukon nimen ennen tai jälkeen Siksi seuraavaksi kaksi lausetta ovat täysin samat merkitykseltään: float[] hinnat; float hinnat[]; Ensimmäinen formaatti on yleisesti helpommin luettava ja sitä pitäisi käyttää (vertaa public static void main lauseen eroihin!) © Jukka Juslin 2006

Taulukkojen sijoittaminen Taulukoita voidaan sijoittaa toiseen taulukkoon sijoitusoperaation avulla Luonnollisesti vain siinä tapauksessa, että sijoitettava taulukko mahtuu sijoituksen kohteeseen asiassa on järkeä Esim. pisteet = jukanPisteet; © Jukka Juslin 2006

Alustuslistat Alustuslistaa voidaan käytää taulukon luomisessa ja arvojen sijoittamisessa taulukkoon samantien Arvot ovat aaltosulkeiden välissä ja toisistaan erotetut pilkkujen avulla Esimerkkejä: int[] yksikot = {147, 323, 89, 933, 540, 269, 97, 114, 298, 476}; char[] arvosanat = {‘1', ‘2', ‘3', ‘4', ’5'}; © Jukka Juslin 2006

Alustuslistat Huomaa, että kun alustuslistaa käytetään: new operaattoria ei käytetä Taulukon kokoa ei määritellä ([5] yms) Taulukon koko määrittyy automaattisesti sen mukaan kuinka monta arvoa alustuslistassa on Alustuslistaa voidaan käyttää vain taulukon luonnin yhteydessä © Jukka Juslin 2006

Taulukot parametrinä Koko taulukko voidaan välittää parametrina metodille Kuten mikä tahansa muun olion kanssa, osoitin taulukkoon (eli olioon) välitetään metodille Kun taulukkoa muutetaan metodin sisällä myös alkuperäinen taulukko muuttuu (eli taulukko siellä mistä metodia on kutsuttu) tarpeen ei siis ole palauttaa taulukkoa metodista Yksittäinen taulukon alkio voidaan välittää metodille myös, jossa tapauksessa alkion tyypin tulee vastata metodin vastaanottamaa tyyppiä (formal ja actual parameters) © Jukka Juslin 2006

Missä ollaan? Taulukoiden luonti ja käyttö Oliotaulukko Vaihtelevan mittaiset parametrilistat Kaksiulotteiset taulukot ArrayList luokka © Jukka Juslin 2006

String[] sanat = new String[5]; Oliotaulukot Taulukon elementit voivat olla olioviitteitä Seuraava lause varaa tilaa viidelle viittaukselle String luokan olioihin String[] sanat = new String[5]; Se ei luo String olioita itseään Alkuarvona taulukkoa pitää null referenssejä (konstruktori) Olio, joka on talletettu taulukkoon täytyy instantioida omassa paikassaan (new avainsana yms.) © Jukka Juslin 2006

System.out.println (sanat[0]); Oliotaulukko sanat taulukko alkuarvoisessa tilanteessa: sanat - Tässä kohdassa seuraava referenssi heittäisi NullPointerException:in: System.out.println (sanat[0]); © Jukka Juslin 2006

Oliotaulukot Sen jälkeen kun muutamia String olioita on luotu ja talletettu taulukkoon: “hauskuus” sanat - “luonti” “nopeus” © Jukka Juslin 2006

Oliotaulukot Pidä mielessäsi, että String olioita voidaan luoda käyttäen literaaleja Seuraava lause luo taulukko-olion, jonka nimi on verbit ja täyttää sen neljällä String oliolla käyttäen merkkijonoliteraaleja String[] verbit = {“leiki", “työskentele", “syö", “nuku"}; © Jukka Juslin 2006

Oliotaulukot Seuraavaksi katsomme esimerkkijä, joka ylläpitää joukkoa CD olioita © Jukka Juslin 2006

Luokkakaavio UML luokkakaavio Kappaleet ohjelmalle: * Kappaleet + main (args : String[]) : void CDKokoelma - kokoelma : CD[] - lukumäärä : int - yhteisHinta : double + lisaaCD (nimi : String, artist : String, hinta : double, kappaleMäärä : int) : void + toString() : String - kasvataKokoa() : void CD - nimi : String - artisti : String - hinta : double - kappaleMäärä : int * 1 © Jukka Juslin 2006

Komentorivi argumentit main metodin formaali määritelmä vihjaa, että että ko. Metodi ottaa String olioita parametrinä Nämä arvot tulevat komentorivi argumenteista jotka annetaan ohjelmalle kun ohjelma ajetaan Esimerkiksi seuraava kääntäjän kutsuminen välittää kaksi String oliota mainille: > java ese uskomaton kiva Nämä stringit talletetaan indeksien 0-1 paikalle main metodin Stringitaulukkoon © Jukka Juslin 2006

Missä ollaan? Taulukkojen luonti ja käyttö Oliotaulukot EXTRA: Vaihtelevanmittaiset parametrilistat Kaksiulotteiset taulukot ArrayList luokka © Jukka Juslin 2006

Vaihtelevan mittaiset parametrilistat Olettaen, että haluisimme tehdä metodin, joka käsittelee vaihtelevan mittaisen määrän parametrejä kutsun mukaan Esimerkiksi, jos luomme metodin, jonka nimi on keskiarvo, joka palauttaa tietyn integer parametrien keskiarvon // yksi kutsu etsiä keskiarvo (neljä lukua) keskiarvo1 = keskiarvo(3, 5, 1, 2); // toinen kutsu saada keskiarvo kolmesta keskiarvo2 = keskiarvo(3, 5, 1); © Jukka Juslin 2006

Vaihtelevan mittaiset parametrilistat Voisimme ns. ylikuormittaa keskiarvo metodin Huono puoli: tarvitsisimme erikseen eri version metodista jokaiselle parametrilistalle Voisimme määrittää metodin, joka ottaa vastaan integer taulukon Huono puoli: meidän täytyisi luoda taulukko ja tallettaa muuttujat ennenkuin metodia kutsutaan kullakin kerralla Tämä sijasta, Java JDK 1.5:sta lähtien tarjoaa mukavan tavan luoda muuttuvan pituisia parametrilistoja © Jukka Juslin 2006

Vaihtelevan pituiset parametrilistat Käyttäen tiettyä syntaksia formaalissaparametrilistassa, voimme määritellä metodin ottamaan vastaan minkä tahansa määrän parametrejä jotka ovat samantyyppisiä Jokaisella kutsulla, parametrit automaattisesti laitetaan taulukkoon, jotta pystytään helposti prosessoimaan parametrit metodissa Ilmoittaa että vaiht. pit. lista kyseessä public double keskiarvo(int ... lista) { // toiminnot } elementin tyyppi taulukon nimi © Jukka Juslin 2006

Vaihtelevan mittaiset parametrilistat Miksi esiteltiin edes koko asia? Opimme mikä on formaali parametri Tästä opimme, että public static void main määre ei ole mikään kiveen hakattu asia. Esimerkiksi seuraava toimii hyvin! public class Häkki { public static void main(String ... argsi) { System.out.println(argsi[0]); System.out.println("ict02d ok"); } © Jukka Juslin 2006

Vaihtelevan mittaiset parametrilistat public double keskiarvo (int ... lista) { double tulos = 0.0; if (lista.length != 0) int summa = 0; for (int numero : lista) summa += numero; tulos = (double)numero / lista.length; } return(tulos); // muista sulkeet tähän! © Jukka Juslin 2006

Vaihtelevan mittaiset parametrilistat Parametrin tyyppi voi olla mikä tahansa primitiivinen tai oma oliotyyppi public void tulosta arvosanat (Arvosana ... arvosanat) { for (Arvosana numero : arvosanat) System.out.println(numero); } © Jukka Juslin 2006

Vaihtelevan pituiset parametrilistat Metodi, joka ottaa vastaan vaihtelevan määrän parametrejä voi myös ottaa vastaan muita parametrejä Seuraava metodi ottaa vastaan yhden int arvon, yhden String olion, ja vaihtelevan mittaisen määrän double tyypisiä arvoja numerot nimiseen taulukkoon public void testi (int laskuri, String nimi, double ... numerot) { // toiminnot } © Jukka Juslin 2006

Muuttuvan pituiset parametrilistat Muuttuvanpituinen parametrilista pitää olla esim. Metodin määrittelyssä viimeisenä (formaalissa määrittelyssä) Yksi metodi ei voi ottaa vastaan kahta muuttuvan pituista parametrilistaa Konstruktorit voidaan myös asettaa niin, että ne ottavat parametrinä vaihtelevan pituisia parametrilistoja © Jukka Juslin 2006

Missä ollaan? Taulukkojen luonti ja käyttö Oliotaulukot Vaihtelevan mittaiset parametrilistat Kaksiulotteiset taulukot ArrayList luokka © Jukka Juslin 2006

Kaksiulotteiset taulukot yksiulotteinen taulukko tallettaa listan elementtejä kaksiulotteinen taulukko voidaan ajatella taulukkona elementtejä, niin kuin Excel ohjelmassa: taulukolla on rivit ja sarakkeet (rivit ja kolumnit) yksi ulottuvuus kaksi ulottuvuutta © Jukka Juslin 2006

Kaksiulotteiset taulukot Tarkastiottaen kaksiulotteinen taulukko on taulukko, joka sisältää taulukkoja Kaksiulotteinen taulukko luodaan määrittelemällä kunkin ulottuvuuden koko erikseen: int[][] pisteet = new int[22][3]; Taulukkoelementtiin viitataan käyttämällä kahta indeksiarvoa: arvosana = pisteet[3][2]; Taulukkoon, joka määritellään yhdellä rivillä voidaan viitata yhdellä indeksinumerolla © Jukka Juslin 2006

Kaksiulotteinen taulukko Lause Tyyppi Kuvaus taulukko int[][] 2D taulukko integereitä taulukko[5] int[] Integer taulukko taulukko[5][12] int integer © Jukka Juslin 2006

Moniulotteiset taulukot Taulukolla voi olla monta ulotteisuutta – jos sillä on enemmän kuin yksi ulottuvuus, sitä kutsutaan moniulotteiseksi taulukoksi Jokainen uluttuvuus muodostaa jokaisen arvon alle halutun kokoisen määrän arvoja. Esim. arvosanat[3][2] jossa indeksi kolmonen viittaisi opiskelijaan Matti ja numero kaksi siihen että poimitaan osion kolme arvosana Jokaisella ulottuvuudella on oma julkinen length vakionsa Koska jokainen ulottuvuus on taulukko taulukkoviittauksista, taulukot yhden ulottuvuuden sisällä voivat olla erimittaisia Näitä kutsutaan sillointällöin rosoisiksi taulukoiksi © Jukka Juslin 2006

Moniulotteiset taulukot Seuraavassa kolmiulotteinen (vrt. rahan laskeminen taulukoissa, taloushallinto) osastot lähiesimiehet budjetit © Jukka Juslin 2006

Missä ollaan? Taulukkojen luonti ja käyttö Oliotaulukot Vaihtelevan pituiset parametrilistat Kaksiulotteiset taulukot ArrayList luokka © Jukka Juslin 2006

ArrayList luokka ArrayList luokka on osa java.util pakettia Kuten taulukko, se voi tallettaa listan arvoja ja viitata kuhunkin käyttäen numeerista indeksiä Kuitenkin, et voi käyttää hakasulje merkintää ArrayList olion kanssa Lisäksi, ArrayList olio kasvaa ja kutistuu tarpeiden mukaan, säätäen kokoaan tilanteen vaatimuksia vastaavaksi © Jukka Juslin 2006

ArrayList luokka Elementtejä voidaan lisätä tai poistaa yhden metodin kutsulla Kun elementti lisätään, muut elementit “liikkuvat syrjään” tehdäkseen tilaa Yhtälailla, kun elementti poistetaan, lista “supistuu kasaan” sulkeakseen tyhjän kohdan Elementtien indeksit muuttuvat vastaavasti niin että esim. tyhjä kohta häviää © Jukka Juslin 2006

ArrayList<Suku> tapaaminen = new ArrayList<Suku>; ArrayList luokka ArrayList tallettaa viittauksia Object luokkaan, jolloin mahdollista on tallettaa minkä tahansalaisia olioita Voimme myös määritellä ArrayList olion hyväksymään vain tietyn tyyppisiä olioita Seuraava rivi luo ArrayList olion, joka tallettaa vain Suku tyyppisiä olioita ArrayList<Suku> tapaaminen = new ArrayList<Suku>; © Jukka Juslin 2006

ArrayListin tehokkuus ArrayList luokka on toteutettu käyttäen allaolevaa taulukkoa Taulukkoa manipuloidaan niin, että indeksit säilyvät jatkuvina kun elementtejä lisätään tai poistetaan Jos elementtejä lisätään ja poistetaan listan lopusta, prosessointi on suhteellisen tehokasta Kun elementtejä lisätään listan alkuun tai keskelle listaa jäljelläolevia elementtejä on siirrettävä © Jukka Juslin 2006

Yhteenveto Olemme käyneet läpi: Taulukon luonti ja käyttö Rajojen tarkistus ja tilavuus Taulukot olioreferenssien tallentajina (OID) Vaihtelevan pituiset parametrilistat Moniulotteiset taulukot ArrayList luokka © Jukka Juslin 2006