Arraylist vs Vector
Ryhmälista voidaan nähdä dynaamisena taulukkona, jonka koko voi kasvaa. Tästä syystä ohjelmoijan ei tarvitse tietää taulukon kokoa määrittäessään sitä. Vektoria voidaan pitää myös ryhmänä, joka voi kasvaa kooltaan. Vektorit voidaan jakaa helposti, ja niihin voidaan tutustua, kun varaston vaadittava koko on tiedossa vasta ajon aikana.
Mikä on arraylist?
Ryhmälista voidaan nähdä dynaamisena taulukkona, jonka koko voi kasvaa. Siksi taulukot ovat ihanteellisia käytettäväksi tilanteissa, joissa et tiedä ilmoittamishetkellä vaadittavien elementtien kokoa. Java-järjestelmässä taulukot voivat pitää vain objekteja, ne eivät voi pitää alkeellisia tyyppejä suoraan (voit laittaa alkeelliset tyypit objektin sisään tai käyttää alkeellisten tyyppien kääreluokkia). Yleensä taulukkoluettelot toimitetaan menetelmillä lisäyksen, poiston ja haun suorittamiseksi. Elementtiin pääsyn aikakompleksisuus on o (1), kun taas insertion ja deletion aikakompleksi on o (n). Java-ohjelmassa ryhmälistoja voidaan kulkea foreach-silmukoilla, iteraattoreilla tai yksinkertaisesti hakemistoilla. Java-ohjelmassa taulukkoluettelot otettiin käyttöön versiosta 1.2 ja se on osa Java Collection Framework -sivua.
Mikä on vektori?
Vector on myös joukko, joka voi kasvaa kooltaan. Vektorit voidaan jakaa helposti, ja niitä voidaan käyttää, kun varaston vaadittava koko on tiedossa vasta ajon aikana. Vektorit voivat myös pitää vain esineitä eivätkä voi pitää alkeellisia tyyppejä. Vektorit on synkronoitu, joten niitä voidaan käyttää turvallisesti monisäikeisissä ympäristöissä. Vektorit toimitetaan menetelmillä objektien lisäämiseen, objektien poistamiseen ja etsimiseen. Samoin kuin Java-taulukossa, vektorit voidaan kulkea käyttämällä foreach-silmukoita, iteraattoreita tai yksinkertaisesti indeksejä käyttämällä. Java-ohjelmassa vektorit on sisällytetty Java-version ensimmäisestä versiosta lähtien.
Mikä on ero Arraylistin ja Vectorin välillä?
Vaikka sekä taulukot että vektorit ovat hyvin samanlaisia dynaamisiin ryhmiin, jotka voivat kasvaa kooltaan, niillä on joitain tärkeitä eroja. Tärkein ero taulukkojen ja vektoreiden välillä on, että vektorit ovat synkronoituja, kun taas taulukkojen luettelot ovat synkronoimattomia. Siksi taulukkoluetteloiden käyttäminen monisäikeisissä ympäristöissä ei sovellu, kun taas vektoreita voidaan käyttää turvallisesti monisäikeisissä ympäristöissä (koska ne ovat säiettä turvallisia). Mutta vektorien synkronointi aiheuttaisi suorituskyvyn heikkenemisen. Siksi ei olisi hyvä idea käyttää vektoreita yhdessä kierteitetyssä ympäristössä. Sisäisesti sekä matriisilistat että vektorit käyttävät taulukoita objektien pitämiseen. Kun nykyinen tila ei ole riittävä, vektorit kaksinkertaistavat sen sisäisen ryhmän koon, kun taas taulukkoluettelot lisäävät sen sisäisen ryhmän kokoa 50%. Mutta käytettäessä sekä taulukkoluetteloita että vektoreita, antamalla sopiva alkukapasiteetti, sisäisen ryhmän tarpeeton koon muuttaminen voidaan välttää. Tilanteessa, jossa datan kasvunopeus tunnetaan, vektoreiden käyttö olisi sopivampi, koska vektorien inkrementaalinen arvo voitaisiin määritellä.