Osio2: Taulukot Jukka Juslin

Samankaltaiset tiedostot
Taulukot. Jukka Harju, Jukka Juslin

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Java-kielen perusteet

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Listarakenne (ArrayList-luokka)

Mikä yhteyssuhde on?

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

1. Omat operaatiot 1.1

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

Ohjelmoinnin jatkokurssi, kurssikoe

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Olio-ohjelmointi Javalla

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Metodien tekeminen Javalla

7. Näytölle tulostaminen 7.1

Rajapinta (interface)

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Java-kielen perusteet

17. Javan omat luokat 17.1

1 Tehtävän kuvaus ja analysointi

4. Luokan testaus ja käyttö olion kautta 4.1

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

16. Javan omat luokat 16.1

ITKP102 Ohjelmointi 1 (6 op)

7/20: Paketti kasassa ensimmäistä kertaa

Javan perusteita. Janne Käki

Java kahdessa tunnissa. Jyry Suvilehto

19. Olio-ohjelmointia Javalla 19.1

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

9. Periytyminen Javassa 9.1

15. Ohjelmoinnin tekniikkaa 15.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

15. Ohjelmoinnin tekniikkaa 15.1

14. Poikkeukset 14.1

Taulukot, silmukat ja muut joka koodin pikku veijarit

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

YHTEYSSUHDE (assosiation)

Ohjelmointi 2 / 2010 Välikoe / 26.3

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Java-kielen perusteet

Ohjelmoinnin perusteet, kurssikoe

14. Poikkeukset 14.1

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

TIETORAKENTEET JA ALGORITMIT

Harjoitus 4 (viikko 47)

Luokan muodostimet (Constructors)

KOHDELUOKAN MÄÄRITTELY

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

UML ja luokkien väliset suhteet

ITKP102 Ohjelmointi 1 (6 op)

9. Periytyminen Javassa 9.1

17. Javan omat luokat 17.1

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Osio2, olio-ohjelmointi: Luokkien ja olioiden käyttäminen Jukka Juslin

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet

Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Ta

Taulukoiden käsittely Javalla

Luokan sisällä on lista

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Luokat ja oliot. Ville Sundberg

Taulukot. Taulukon käsittely. Tämän osan sisältö. Esimerkki. Taulukon esittely ja luonti. Taulukon alustaminen. Taulukon koko

Osoitin ja viittaus C++:ssa

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

18. Abstraktit tietotyypit 18.1

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

Harjoitus 5 (viikko 48)

7. Oliot ja viitteet 7.1

Java-kielen perusteita

Ohjelmoinnin perusteet, syksy 2006

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

11. Javan toistorakenteet 11.1

Java-kielen perusteita

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Ohjelmointi 2 / 2011 Välikoe / 25.3

Tietueet. Tietueiden määrittely

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Transkriptio:

Osio2: Taulukot Jukka Juslin Jukka Juslin 1

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 2

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

Taulukko Taulukko on järjestetty lista arvoja Koko taulukolla on yksi nimi Jokaisella arvolla on numeerinen indeksi 0 1 2 3 4 5 6 7 8 9 pisteet 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 4

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 5

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 6

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 7

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

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 9

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 10

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 11

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 12

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 13

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 14

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 15

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 16

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 17

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 18

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 19

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

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 21

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

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

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 24

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

Luokkakaavio UML luokkakaavio Kappaleet ohjelmalle: Kappaleet + main (args : String[]) : void CD - nimi : String - artisti : String - hinta : double - kappalemäärä : int + tostring() : String * - kokoelma : CD[] - lukumäärä : int - yhteishinta : double CDKokoelma + lisaacd (nimi : String, artist : String, hinta : double, kappalemäärä : int) : void + tostring() : String - kasvatakokoa() : void 1 Jukka Juslin 26

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 27

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

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 29

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 30

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 31

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 32

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 33

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 34

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 35

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 36

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

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 38

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 39

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

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 41

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

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

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 44

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 45

ArrayList luokka An 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 46

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 47

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