Массив тізімі және Вектор
Массивтер тізімін өлшемі ұлғаюы мүмкін динамикалық массив ретінде көруге болады. Осы себепті программист оны анықтау кезінде массив тізімінің өлшемін білудің қажеті жоқ. Векторды өлшемі өсетін массив ретінде де көруге болады. Векторларды оңай бөлуге болады және жадтың қажетті өлшемі орындалу уақытына дейін белгісіз болған кезде қолдануға болады.
Аррейлер тізімі дегеніміз не?
Массивтер тізімін өлшемі ұлғаюы мүмкін динамикалық массив ретінде көруге болады. Сондықтан массивтер тізімдерін декларациялау кезінде қажетті элементтердің өлшемін білмеген жағдайда қолдануға өте ыңғайлы. Java тілінде массив тізімдері тек нысандарды ұстай алады, олар тікелей қарабайыр типтерді ұстай алмайды (қарапайым типтерді объектінің ішіне қоюға немесе қарабайыр типтердің орауыш сыныптарын пайдалануға болады). Әдетте массив тізімдері кірістіру, жою және іздеуді орындау әдістерімен қамтамасыз етіледі. Элементке қол жеткізудің уақыттық күрделілігі o(1), ал кірістіру мен жоюдың o(n) уақыт күрделілігі бар. Java тілінде массив тізімдерін foreach циклдары, итераторлар немесе жай ғана индекстер арқылы өтуге болады. Java тілінде массив тізімдері 1.2 нұсқасынан бастап енгізілді және ол Java Collections Framework бөлігі болып табылады.
Вектор дегеніміз не?
Вектор да өлшемі ұлғаюы мүмкін массив болып табылады. Векторларды оңай бөлуге болады және жадтың қажетті өлшемі орындалу уақытына дейін белгісіз болған кезде пайдалануға болады. Векторлар тек объектілерді ғана ұстай алады және қарабайыр түрлерін ұстай алмайды. Векторлар синхрондалады, сондықтан оларды көп ағынды орталарда қауіпсіз пайдалануға болады. Векторлар объектілерді қосу, объектілерді жою және объектілерді іздеу әдістерімен қамтамасыз етілген. Java тіліндегі arraylist сияқты векторларды foreach циклдары, итераторлар немесе жай ғана индекстер арқылы өтуге болады. Java-ға келетін болсақ, векторлар Java-ның бірінші нұсқасынан бері енгізілген.
Аррейлист пен вектордың айырмашылығы неде?
Массив тізімдері де, векторлар да өлшемі ұлғаюы мүмкін динамикалық массивтерге өте ұқсас болғанымен, олардың кейбір маңызды айырмашылықтары бар. Массив тізімдері мен векторлардың негізгі айырмашылығы векторлар синхрондалған, ал массивтер синхрондалмаған. Сондықтан көп ағынды орталарда массив тізімдерін пайдалану жарамсыз болады, ал векторларды көп ағынды орталарда қауіпсіз пайдалануға болады (себебі олар ағынды қауіпсіз). Бірақ векторлардағы синхрондау өнімділіктің төмендеуіне әкеледі. Сондықтан бір ағынды ортада векторларды пайдалану жақсы идея емес. Ішкі түрде массивтер тізімдері де, векторлар да нысандарды ұстау үшін массивтерді пайдаланады. Ағымдағы кеңістік жеткіліксіз болғанда, векторлар оның ішкі массивінің өлшемін екі есе ұлғайтады, ал массивтер оның ішкі массивінің өлшемін 50% арттырады. Бірақ массивтер тізімдерін де, векторларды да пайдаланған кезде, қолайлы бастапқы сыйымдылықты беру арқылы ішкі массивтің қажетсіз өлшемін өзгертуді болдырмауға болады. Деректер өсу қарқыны белгілі болған жағдайда, векторларды пайдалану қолайлырақ болады, өйткені векторлардың қосымша мәнін анықтауға болады.