Asosiy farq – ArrayList va LinkedList
Toʻplamlar maʼlumotlarni saqlash uchun foydalidir. Oddiy massivda massiv o'lchami o'rnatiladi. Ba'zan kerak bo'lganda o'sishi mumkin bo'lgan massivlarni yaratish talab qilinadi. Java kabi dasturlash tillarida to'plamlar mavjud. Bu sinflar va interfeyslar to'plamiga ega bo'lgan ramka. U bir guruh elementlar uchun idish bo'lib xizmat qiladi. To'plamlar elementlar to'plamini saqlash, yangilash, olish imkonini beradi. Bu ro'yxatlar, to'plamlar, daraxtlar va xaritalar kabi ma'lumotlar tuzilmalari bilan ishlashga yordam beradi. Ro'yxat Collection ramkasining interfeysidir. ArrayList va LinkedList to'plamlar doirasidagi ikkita sinfdir. Ular yig'ish interfeysi va List interfeysini amalga oshiradilar. Ushbu maqolada ArrayList va LinkedList o'rtasidagi farq muhokama qilinadi. ArrayList - AbstractListni kengaytiruvchi va List interfeysini amalga oshiradigan sinf bo'lib, u ichki ma'lumotlar elementlarini saqlash uchun dinamik massivdan foydalanadi. LinkedList - bu AbstractSequentialListni kengaytiradigan va ma'lumotlar elementlarini saqlash uchun ikki marta bog'langan ro'yxatni ishlatadigan List, Deque va Queue interfeyslarini amalga oshiradigan sinf. Bu ArrayList va LinkedList o'rtasidagi asosiy farq.
ArrayList nima?
ArrayList klassi dinamik massivlarni yaratish uchun ishlatiladi. Oddiy massivdan farqli o'laroq, dinamik massivning o'lchami aniq emas. ArrayList klassi yordamida yaratilgan ob'ektga ro'yxatdagi elementlar to'plamini saqlashga ruxsat beriladi. Imkoniyatlar avtomatik ravishda ortadi, shuning uchun dasturchi elementlarni ro'yxatga qo'shishi mumkin. ArrayList klassi List interfeysini amalga oshiradigan AbstractList sinfini kengaytiradi. Shuning uchun List interfeysining usullaridan ArrayList tomonidan foydalanish mumkin. Elementlarga kirish uchun get() usuli qo'llaniladi. Ro'yxatga elementlar qo'shish uchun add() usulidan foydalanish mumkin. Remove() usuli elementni roʻyxatdan olib tashlash uchun ishlatiladi. Quyidagi dasturga qarang.
01-rasm: Massivlar roʻyxatiga misol
Yuqoridagi dasturga muvofiq ArrayList obyekti yaratiladi. Qo'shish usuli yordamida elementlarni dinamik ravishda qo'shish mumkin. "A", "B", "C", "D" va "E" elementlari qo'shish usuli yordamida qo'shiladi. O'chirish usuli elementni ro'yxatdan olib tashlash uchun ishlatiladi. O'chirish usuliga 4 o'tkazilganda, 4-indeksdagi "E" harfi ro'yxatdan o'chiriladi. For tsikli yordamida ro'yxatni takrorlashda A, B, C va D harflari chop etiladi.
LinkedList nima?
ArrayListga oʻxshab, LinkedList maʼlumotlar elementlarini dinamik saqlash uchun ishlatiladi. LinkedList klassi yordamida yaratilgan ob'ektga ro'yxatdagi elementlar to'plamini saqlashga ruxsat beriladi. Imkoniyatlar avtomatik ravishda ortadi, shuning uchun dasturchi elementlarni ro'yxatga qo'shishi mumkin. U ichki ma'lumotlarni saqlash uchun ikki marta bog'langan ro'yxatni ishlatadi. Ikki marta bog'langan ro'yxatda ma'lumotlar tugunlar sifatida saqlanadi. Har bir tugun ikkita havolani o'z ichiga oladi. Birinchi havola oldingi tugunga ishora qiladi. Keyingi havola ketma-ketlikdagi keyingi tugunga ishora qiladi.
LinkedList klassi AbstractSequentialList sinfini kengaytiradi va List interfeysini amalga oshiradi. Shuning uchun List interfeysi usullari LinkedList tomonidan ishlatilishi mumkin. Get() usuli roʻyxat elementlariga kirish uchun ishlatilishi mumkin. Ro'yxatga elementlar qo'shish uchun add() usulidan foydalanish mumkin. Remove() usuli elementni roʻyxatdan olib tashlash uchun ishlatiladi. Quyidagi dasturga qarang.
02-rasm: LinkedList bilan namuna
Yuqoridagi dasturga muvofiq, LinkedList ob'ekti yaratilgan. Qo'shish usuli yordamida elementlarni dinamik ravishda qo'shish mumkin. "A", "B", "C", "D" va "E" elementlari qo'shish usuli yordamida qo'shiladi. O'chirish usuli elementni ro'yxatdan olib tashlash uchun ishlatiladi. O'chirish usuliga 4 o'tkazilganda, 4-indeksdagi "E" harfi ro'yxatdan o'chiriladi. For tsikli yordamida takrorlanganda A, B, C va D harflari chop etiladi.
ArrayList va LinkedList oʻrtasidagi oʻxshashliklar qanday?
- ArrayList ham, LinkedList ham List interfeysini amalga oshiradi.
- ArrayList ham, LinkedList ham ikki nusxadagi elementlarni oʻz ichiga olishi mumkin.
- Ham ArrayList, ham LinkedList qoʻshish tartibini saqlaydi.
ArrayList va LinkedList oʻrtasidagi farq nima?
ArrayList va LinkedList |
|
ArrayList - AbstractListni kengaytiruvchi va ma'lumotlar elementlarini saqlash uchun ichki dinamik massivdan foydalanadigan List interfeysini amalga oshiradigan sinf. | LinkedList - AbstractSequentialListni kengaytiruvchi va List, Deque, Queue interfeyslarini amalga oshiradigan sinf boʻlib, u ichki maʼlumotlar elementlarini saqlash uchun ikki marta bogʻlangan roʻyxatni ishlatadi. |
Elementlarga kirish | |
ArrayList elementlariga kirish LinkedListga qaraganda tezroq. | LinkedList elementlariga kirish ArrayListga qaraganda sekinroq. |
Elementlarni boshqarish | |
ArrayList elementlarini manipulyatsiya qilish LinkedListga qaraganda sekinroq. | LinkedList elementlarini manipulyatsiya qilish ArrayListga qaraganda tezroq. |
Xulq-atvor | |
ArrayList roʻyxat sifatida ishlaydi. | LinkedList roʻyxat va navbat sifatida ishlaydi. |
Xulosa – ArrayList va LinkedList
Toʻplam tizimi roʻyxatlar, daraxtlar, xaritalar va toʻplamlar kabi maʼlumotlar tuzilmalari bilan ishlash imkonini beradi. Ro'yxat yig'ish ramkasining interfeysidir. Ushbu maqola ArrayList va LinkedList o'rtasidagi farqni muhokama qildi. ArrayList - AbstractListni kengaytiruvchi va ma'lumotlar elementlarini saqlash uchun dinamik massivdan ichki foydalanadigan List interfeysini amalga oshiradigan sinf. LinkedList - bu AbstractSequentialListni kengaytiruvchi va List, Deque, Queue interfeyslarini amalga oshiradigan sinf bo'lib, u ichki ma'lumotlar elementlarini saqlash uchun ikki marta bog'langan ro'yxatni ishlatadi. Bu ArrayList va LinkedList o'rtasidagi farq.