Негізгі айырмашылық – тізім мен жиын
Бағдарламалау тілдерінің көпшілігі бірдей типтегі деректер жинағын сақтау үшін массивтерді пайдаланады. Массивтердің бір маңызды кемшілігі - массив өлшемі жарияланғаннан кейін оны өзгерту мүмкін емес. Егер бағдарламашы массив өлшемінен асатын мәндерді сақтағысы келсе, онда ол жаңа массив жасап, бар элементтерді жаңа массивке көшіруі керек. Мұндай жағдайларда жинақтарды пайдалануға болады. Жинақтардың қолдауымен элементтерді қосу, элементтерді жою және басқа да көптеген операцияларды орындауға болады. Java сияқты бағдарламалау тілдерінде жинақтардың әртүрлі түрлері бар. Тізім және Жиын жинақтар иерархиясының интерфейстері болып табылады. Басқа интерфейстердің негізгі интерфейсі Collection болып табылады. Тізім мен Жиын арасындағы негізгі айырмашылық мынада: Тізім бір элементті бірнеше рет сақтауды қолдайды, ал Set бір элементті бірнеше рет сақтауды қолдамайды. Сондықтан жиын көшіруге рұқсат бермейді.
Тізім дегеніміз не?
Тізім - Жинақ интерфейсін кеңейтетін интерфейс. Коллекция интерфейсінде бірнеше әдістер бар. Қосу әдісі элементті қосуға көмектеседі. «Жою әдісі» элементті жою болып табылады. Жиыннан элементтерді жою үшін «removeAll әдісі» бірнеше элементтерді қосу үшін «addAll әдісі» бар. contain әдісі белгілі бір нысанның Тізімде бар-жоғын анықтауға көмектеседі. «containsAll» коллекцияда нысандар жиынының бар-жоғын анықтау болып табылады. Итератор әдісі тізім элементтерін айналдыру үшін қолданылады. Тізім Жинақты кеңейтетіндіктен, Жинақтың барлық әдістері Тізімге жатады. Бұл әдістерден басқа, Тізімде алу және орнату сияқты әдістер бар. Бағдарламалаушы get әдісін пайдаланып белгілі бір индекс бойынша мән ала алады. Бағдарламалаушы белгіленген әдісті пайдаланып белгілі бір индексте мәнді орната алады. 'indexOf' элементтің индексін табу үшін пайдаланылады.
Тізімдегі әрекеттерді орынға сәйкес орындауға болады. Бағдарламалаушы индекске қосылатын деректер элементін бере алады. Сондықтан ол нақты индекске қосылады. Егер бағдарламашы индекс бермесе, элемент Тізімнің соңына қосылады. Ол сонымен қатар енгізілген тәртіпті сақтайды. 1-элемент қосылып, содан кейін элемент2 қосылса, 1-элемент 2-элементтің алдында болады.
01-сурет: Тізім және орнату
ArrayList, LinkedList, Vector - бұл тізімді жүзеге асыратын кейбір сыныптар. ArrayList ішінде элементке қол жеткізу жылдам, бірақ кірістіру және жою төменірек. ArrayList ағын үшін қауіпсіз емес. Бірнеше ағындардан бірдей ArrayList-ке қатынасу бірдей нәтиже бермеуі мүмкін. LinkedList-те элементтер артқа да, алға да байланыстырылады. LinkedList арқылы элементтерді енгізу және жою ArrayList-ке қарағанда жылдамырақ. LinkedList тізім мен кезек екеуін де жүзеге асырады. Вектор ArrayList-ке ұқсайды, бірақ барлық әдістер синхрондалғандықтан, ол басуға қауіпсіз.
Орнатылған не?
Жинақ – коллекция интерфейсін кеңейтетін интерфейс. Set интерфейсі коллекцияны кеңейтетіндіктен, коллекцияның барлық әдістері де Set-ке тиесілі. Жиын қайталанатын мәндерді қолдамайды. Сондықтан бағдарламашы бір элементті екі рет сақтай алмайды. Ол элементтердің бірегей жиынтығын сақтайды. SortedSet интерфейсі Set интерфейсін кеңейтеді. SortedSet элементтерді сұрыпталған тәртіпте сақтайды. NavigableSet интерфейсі SortedSet ауқымын кеңейтеді. NavigableSet төменгі, еден, төбе т.б. сияқты навигация әдістерін қамтамасыз етеді.
HashSet, LinkedHashSet және TreeSet - Set интерфейсін жүзеге асыратын кейбір сыныптар. HashSet Set интерфейсін жүзеге асырады. Ол енгізілген тәртіпті сақтамайды. Егер мәндер a, x, b ретінде кірістірілсе, ол, x, a, b түрінде сақталуы мүмкін. LinkedSet кірістірілген тәртіпті сақтайды. Егер элементтер a, x, b ретімен кірістірілсе, сақтау тәртібі a, x, b болады. TreeSet Set және NavigableSet іске асырады. Ол кірістіру ретін сақтамайды, бірақ элементтерді сұрыпталған тәртіпте сақтайды. Егер кірістірілген тәртіп a, c, b болса, онда элементтер a, b, c ретінде сақталады. Барлық HashSet, LinkedHashSet және TreeSet ешбір қайталанатын элементтерге ие болмайды.
Тізім мен жиынның қандай ұқсастықтары бар?
- Тізім және Жиын интерфейстері Коллекция интерфейсін кеңейтеді.
- Тізім мен орнатудың екеуі де элементтерді қосу, жою сияқты әрекеттерді қолдау.
Тізім мен жиынның айырмашылығы неде?
Тізім және Жиын |
|
Тізім интерфейсі – индекс негізінде кірістіру, жою сияқты әрекеттерді орындау әдістерін қамтитын Жинақтың ішкі интерфейсі. | Орнату интерфейсі – бірегей элементтерді сақтай отырып, элементтерді енгізу, жою сияқты әрекеттерді орындау әдістерін қамтитын Коллекцияның ішкі интерфейсі. |
Сабақтар | |
ArrayList, Vector және LinkedList - тізім интерфейсін жүзеге асыратын сыныптар. | HashSet, LinkedHashSet және TreeSet - Set интерфейсін жүзеге асыратын сыныптар. |
Элементтің қайталануы | |
Тізім элементтердің қайталануын қолдайды. | Жинау элементтердің қайталануын қолдамайды. Элементтер бірегей. |
Қорытынды – Тізім мен Жиын
Жинақтар элементтерді динамикалық түрде сақтау үшін пайдаланылады. Java сияқты бағдарламалау тілдері Collection интерфейсін қамтамасыз етеді. Тізім және Жиын - бұл Коллекция интерфейсіне жататын екі интерфейс. Екі интерфейс де Жинақты кеңейтеді. Бұл мақалада Тізім мен Жиын арасындағы айырмашылық талқыланды. Тізім мен Жиын арасындағы негізгі айырмашылық мынада: Тізім бір элементті бірнеше рет сақтауды қолдайды, ал Set бір элементті бірнеше рет сақтауды қолдамайды. Жиын әрқашан бірегей элементтерді сақтайды.