Verskil tussen skikkingslys en vektor

Verskil tussen skikkingslys en vektor
Verskil tussen skikkingslys en vektor

Video: Verskil tussen skikkingslys en vektor

Video: Verskil tussen skikkingslys en vektor
Video: C++ | Модификаторы Типов | Указатели Ссылки | 03 2024, Julie
Anonim

Arraylist vs Vector

'n Skikkinglys kan gesien word as 'n dinamiese skikking, wat in grootte kan groei. As gevolg van hierdie rede hoef die programmeerder nie die grootte van die skikkingslys te ken wanneer hy/sy dit definieer nie. Vektor kan ook gesien word as 'n skikking wat in grootte kan groei. Vektore kan maklik toegewys word en kan gebruik word wanneer die vereiste grootte van die berging nie bekend is tot looptyd nie.

Wat is 'n Arraylist?

'n Skikkinglys kan gesien word as 'n dinamiese skikking, wat in grootte kan groei. Skikkingslyste is dus ideaal om gebruik te word in situasies waarin jy nie weet wat die grootte van die elemente benodig word ten tyde van die verklaring nie. In Java kan skikkingslyste slegs voorwerpe hou, hulle kan nie primitiewe tipes direk hou nie (jy kan die primitiewe tipes binne 'n voorwerp plaas of die omhulklasse van die primitiewe tipes gebruik). Oor die algemeen word skikkingslyste voorsien van metodes om invoeging, uitvee en soek uit te voer. Tydskompleksiteit van toegang tot 'n element is o(1), terwyl invoeging en skrapping 'n tydkompleksiteit van o(n) het. In Java kan skikkingslyste deurkruis word met behulp van elke lusse, iterators of bloot met behulp van die indekse. In Java is skikkingslyste vanaf weergawe 1.2 bekendgestel en dit is deel van die Java Collections Framework.

Wat is 'n vektor?

Vektor is ook 'n skikking wat in grootte kan groei. Vektore kan maklik toegewys word en kan gebruik word wanneer die vereiste grootte van die berging nie bekend is tot looptyd nie. Vektore kan ook net voorwerpe hou en kan nie primitiewe tipes hou nie. Vektore is gesinchroniseer en kan dus veilig in multithreaded omgewings gebruik word. Vektore word voorsien van metodes om voorwerpe by te voeg, voorwerpe uit te vee en voorwerpe te soek. Soortgelyk aan arraylist in Java, kan vektore deurkruis word met behulp van foreach lusse, iterators of bloot met behulp van die indekse. Wanneer dit by Java kom, is vektore ingesluit sedert die eerste weergawe van Java.

Wat is die verskil tussen Arraylist en Vector?

Al is beide die skikkingslyste en vektore baie soortgelyk aan dinamiese skikkings wat in grootte kan groei, het hulle 'n paar belangrike verskille. Die belangrikste verskil tussen skikkinglyste en vektore is dat die vektore gesinchroniseer is, terwyl skikkinglyste ongesinchroniseer is. Daarom sal die gebruik van skikkingslyste in multithreaded omgewings nie geskik wees nie, terwyl vektore veilig in multithreaded omgewings gebruik kan word (aangesien hulle draad veilig is). Maar sinchronisasie in vektore sal 'n vermindering in werkverrigting veroorsaak. Daarom sal dit nie 'n goeie idee wees om vektore in 'n enkele draadomgewing te gebruik nie. Intern gebruik beide skikkingslyste en vektore skikkings om voorwerpe te hou. Wanneer die huidige spasie nie genoeg is nie, sal vektore die grootte van sy interne skikking verdubbel, terwyl skikkings die grootte van sy interne skikking met 50% vergroot. Maar wanneer beide die skikkingslyste en vektore gebruik word, deur 'n geskikte aanvanklike kapasiteit te gee, kan onnodige grootte van die interne skikking vermy word. In 'n situasie waar die groeikoers van data bekend is, sal die gebruik van vektore meer geskik wees aangesien die inkrementele waarde van vektore gedefinieer kan word.

Aanbeveel: