Arraylist vs Vector
Massaristide nimekirja võib vaadelda kui dünaamilist massiivi, mille suurus võib kasvada. Sel põhjusel ei pea programmeerija seda määratledes teadma masilisti suurust. Vektorit võib vaadelda ka kui massiivi, mille suurus võib kasvada. Vektorid on hõlpsasti eraldatavad ja nendega saab harjuda, kui mäluseadme vajaminev suurus pole teada enne tööaega.
Mis on arraylist?
Massaristide nimekirja võib vaadelda kui dünaamilist massiivi, mille suurus võib kasvada. Seetõttu on massiivide loendid ideaalsed kasutamiseks olukorras, kus te ei tea deklareerimise ajal nõutavate elementide suurust. Java-s saavad massiivide nimekirjades hoida ainult objekte, primitiivseid tüüpe nad ei saa otse hoida (võite primitiivsed tüübid objekti sisse panna või kasutada primitiivsete tüüpide mähkimisklasse). Üldiselt on massiiviloendid varustatud meetoditega sisestamiseks, kustutamiseks ja otsimiseks. Elemendile juurdepääsu ajaline keerukus on o (1), samas kui sisestamisel ja kustutamisel on aja keerukus o (n). Java-keeles saab massiivide loendeid sirvida foreach-silmuste, iteraatorite või lihtsalt indeksite abil. Java-keeles tutvustati massiivide nimekirju alates versioonist 1.2 ja see on osa Java Collection Frameworkist.
Mis on vektor?
Vektor on ka massiiv, mille suurus võib kasvada. Vektorid on hõlpsasti eraldatavad ja neid saab kasutada siis, kui vajaminev mäluseade pole enne tööaega teada. Vektorid mahutavad ka ainult objekte ega saa hoida primitiivseid tüüpe. Vektorid on sünkroniseeritud, seetõttu saab neid keermestatud keskkondades ohutult kasutada. Vektorid on varustatud meetoditega objektide lisamiseks, objektide kustutamiseks ja objektide otsimiseks. Sarnaselt java arüülloendiga saab vektoreid läbida foreach-silmuste, iteraatorite või lihtsalt indeksite abil. Java kohta on vektorid kaasatud alates Java esimesest versioonist.
Mis vahe on Arraylist ja Vector?
Ehkki nii massiivid kui ka vektorid on väga sarnased dünaamiliste massiividega, mille suurus võib kasvada, on neil mõned olulised erinevused. Massiivide ja vektorite peamine erinevus seisneb selles, et vektorid on sünkroniseeritud, samal ajal kui massiivide nimekirjad on sünkroniseerimata. Seetõttu ei sobi massiilide kasutamine keermestatud keskkondades, samas kui vektoreid saab mitme keermega keskkondades ohutult kasutada (kuna need on keermekindlad). Kuid vektorites sünkroniseerimine vähendaks jõudlust. Seetõttu ei oleks hea mõte kasutada vektoreid ühes keermestatud keskkonnas. Sisemiselt kasutavad nii massiilistid kui ka vektorid objektide hoidmiseks massiive. Kui praegune ruum ei ole piisav, kahekordistavad vektorid selle sisemise massiivi suuruse, samal ajal kui massiilistid suurendavad selle sisemise massiivi suurust 50%. Kuid nii massiivide kui ka vektorite kasutamisel saab sobiva algmahu andmisega vältida sisemise massiivi ebavajalikku suuruse muutmist. Olukorras, kus andmete kasvukiirus on teada, oleks vektorite kasutamine sobivam, kuna vektorite juurdekasvu väärtuse saab määratleda.