Arrays vs Arraylists
Matriisit ovat yleisimmin käytetty tietorakenne elementtikokoelman tallentamiseen. Useimmat ohjelmointikielet tarjoavat menetelmiä, joilla voit helposti ilmoittaa taulukoita ja käyttää taulukoiden elementtejä. Arylist voidaan nähdä dynaamisena taulukkona, jonka koko voi kasvaa. Tästä syystä ohjelmoijan ei tarvitse tietää taulukon kokoa määrittäessään sitä.
Mitä ovat taulukot?
Kuvassa 1 on koodinpätkä, jota käytetään tyypillisesti taulukon arvojen ilmoittamiseen ja määrittämiseen. Kuva 2 esittää, miltä matriisi näyttäisi muistissa.
int arvot[5]; values[0]=100; arvot[1]=101; arvot[2]=102; arvot[3]=103; arvot[4]=104; |
Kuva 1: Koodi arvojen ilmoittamiseen ja määrittämiseen taulukolle
100 | 101 | 102 | 103 | 104 |
Hakemisto: 0 | 1 | 2 | 3 | 4 |
Kuva 2: Muistiin tallennettu taulukko
Yllä oleva koodi määrittelee taulukon, joka voi tallentaa 5 kokonaislukua ja niihin päästään indekseillä 0 - 4. Yksi tärkeä taulukon ominaisuus on, että koko taulukko on varattu yhdeksi muistilohkoksi ja jokainen elementti saa omansa. oma tila taulukossa. Kun taulukko on määritetty, sen koko on kiinteä. Joten jos et ole varma taulukon koosta käännöshetkellä, sinun on määritettävä riittävän suuri taulukko ollaksesi turvassa. Mutta useimmiten aiomme itse asiassa käyttää vähemmän elementtejä kuin olemme osoittaneet. Joten huomattava määrä muistia menee hukkaan. Toisa alta, jos "riittävän suuri joukko" ei itse asiassa ole tarpeeksi suuri, ohjelma kaatuu.
Mitä ovat Arraylists?
Matriisilistaa voidaan pitää dynaamisena taulukkona, jonka koko voi kasvaa. Siksi taulukkolistat ovat ihanteellisia käytettäväksi tilanteessa, jossa et tiedä vaadittujen elementtien kokoa ilmoitushetkellä. Javassa taulukkolistat voivat sisältää vain objekteja, ne eivät voi sisältää primitiivityyppejä suoraan (voit laittaa primitiivityypit objektin sisään tai käyttää primitiivityyppien kääreluokkia). Yleensä taulukkoluettelot tarjoavat menetelmiä lisäyksen, poiston ja haun suorittamiseksi. Elementin käytön aika monimutkaisuus on o(1), kun taas lisäyksen ja poistamisen aikamonimutkaisuus on o(n). Javassa taulukkolistat voidaan kulkea käyttämällä foreach-silmukoita, iteraattoreita tai yksinkertaisesti indeksejä.
Mitä eroa on taulukoilla ja taulukkoluetteloilla
Vaikka taulukot ja taulukkoluettelot ovat samank altaisia siinä mielessä, että niitä molempia käytetään elementtikokoelmien tallentamiseen, ne eroavat toisistaan määrittelytavassa. Taulukon koko on annettava, kun taulukko määritellään, mutta voit määrittää taulukon todellista kokoa tietämättä. Voit lisätä elementtejä taulukkoluetteloon sen määrittämisen jälkeen, mutta tämä ei ole mahdollista taulukoiden kanssa. Mutta Javassa taulukkoluettelot eivät voi sisältää primitiivityyppejä, mutta taulukoita voidaan käyttää primitiivityyppien säilyttämiseen. Mutta jos tarvitset tietorakenteen, joka voi vaihdella sen kokoa, arraylist on paras valinta.