Arraylist vs Vektor
Një grup grupesh mund të shihet si një grup dinamik, i cili mund të rritet në madhësi. Për këtë arsye, programuesi nuk ka nevojë të dijë madhësinë e listës së grupeve kur ai/ajo është duke e përcaktuar atë. Vektori mund të shihet gjithashtu si një grup që mund të rritet në madhësi. Vektorët mund të ndahen lehtësisht dhe mund të përdoren kur madhësia e kërkuar e ruajtjes nuk dihet deri në kohën e ekzekutimit.
Çfarë është një listë grupesh?
Një grup grupesh mund të shihet si një grup dinamik, i cili mund të rritet në madhësi. Prandaj, listat e grupeve janë ideale për t'u përdorur në situata në të cilat nuk e dini madhësinë e elementeve të kërkuara në kohën e deklarimit. Në Java, listat e grupeve mund të mbajnë vetëm objekte, ato nuk mund të mbajnë direkt tipat primitivë (mund t'i vendosni llojet primitive brenda një objekti ose të përdorni klasat e mbështjellësit të llojeve primitive). Në përgjithësi listat e grupeve pajisen me metoda për të kryer futjen, fshirjen dhe kërkimin. Kompleksiteti kohor i aksesimit të një elementi është o(1), ndërsa futja dhe fshirja kanë një kompleksitet kohor prej o(n). Në Java, listat e grupeve mund të përshkohen duke përdorur sythe foreach, përsëritës ose thjesht duke përdorur indekset. Në Java, listat e grupeve u prezantuan nga versioni 1.2 dhe është pjesë e Kornizës së Koleksioneve Java.
Çfarë është një vektor?
Vektori është gjithashtu një grup që mund të rritet në madhësi. Vektorët mund të ndahen lehtësisht dhe mund të përdoren kur madhësia e kërkuar e ruajtjes nuk dihet deri në kohën e ekzekutimit. Vektorët gjithashtu mund të mbajnë vetëm objekte dhe nuk mund të mbajnë lloje primitive. Vektorët janë të sinkronizuar, prandaj mund të përdoren në mënyrë të sigurtë në mjedise me shumë fije. Vektorët janë të pajisur me metoda për të shtuar objekte, për të fshirë objekte dhe për të kërkuar objekte. Ngjashëm me listën e grupeve në java, vektorët mund të përshkohen duke përdorur unazat e foreach, përsëritësit ose thjesht duke përdorur indekset. Kur bëhet fjalë për Java, vektorët janë përfshirë që në versionin e parë të Java.
Cili është ndryshimi midis Arraylist dhe Vector?
Edhe pse si listat e grupeve ashtu edhe vektorët janë shumë të ngjashëm me grupet dinamike që mund të rriten në madhësi, ato kanë disa dallime të rëndësishme. Dallimi kryesor midis listave të grupeve dhe vektorëve është se vektorët janë të sinkronizuar ndërsa listat e grupeve janë të pasinkronizuar. Prandaj, përdorimi i listave të grupeve në mjedise me shumë fije nuk do të jetë i përshtatshëm, ndërsa vektorët mund të përdoren në mënyrë të sigurtë në mjediset me shumë fije (pasi janë të sigurta me fije). Por sinkronizimi në vektorë do të shkaktonte një ulje të performancës. Prandaj, nuk do të ishte një ide e mirë përdorimi i vektorëve në një mjedis të vetëm filetuar. Brenda, si listat e grupeve ashtu edhe vektorët përdorin vargje për të mbajtur objekte. Kur hapësira aktuale nuk është e mjaftueshme, vektorët do të dyfishojnë madhësinë e grupit të tij të brendshëm, ndërsa listat e grupeve rrisin madhësinë e grupit të tij të brendshëm me 50%. Por kur përdoren si listat e grupeve ashtu edhe vektorët, duke dhënë një kapacitet fillestar të përshtatshëm, mund të shmanget ndryshimi i madhësisë së panevojshme të grupit të brendshëm. Në një situatë ku norma e rritjes së të dhënave është e njohur, përdorimi i vektorëve do të ishte më i përshtatshëm pasi mund të përcaktohet vlera rritëse e vektorëve.