Kirish
Ko'pgina dasturlarda qandaydir ma'lumotlar to'plamini saqlash ehtiyoji tug'iladi. Bu satrlar va raqamlar, obyektlar va boshqalar bo'lishi mumkin. Bu maqsadlar uchun massivlar juda mos keladi. Lekin massivlarda ba'zi cheklovlar mavjud. Masalan, o'lcham fiksatsiyasi, elementlarni o'chirish imkoniyati yo'qligi, o'rtaga elementlar qo'shish imkoniyati yo'qligi. Bu va boshqa cheklovlarni chetlab o'tish uchun kolleksiyalar yaratildi. Barcha kolleksiya turlarida (ular juda ko'p, bu ma'ruza davomida ko'rib chiqamiz), o'z o'lchamini dinamik ravishda o'zgartirish imkoniyati mavjud. Ba'zi kolleksiya turlari tartibli elementlarni saqlash va yangi elementlarni qo'shganda avtomatik ravishda ularni tartibga solish imkoniyatiga ega.
Bu ma'ruzada biz Java Collections Framework asosiy kolleksiyalarining klasslar iyerarxiyasini ko'rib chiqamiz. Yana bir qator alternativ kutubxonalar mavjud bo'lib, ular standart Java Collections Framework imkoniyatlarini kengaytiradi. Eng mashhuri — Guava (Google Collections Library).
Asosiy interfeyslar
Diagrammadan ko'rinib turibdiki, ikkita asosiy interfeys mavjud bo'lib, ulardan qolgan kolleksiyalar klasslari va interfeyslari amalga oshiriladi.
Keling, bu interfeyslarni ko'rib chiqamiz:
Collection – alohida elementlar (obyektlar) to'plamini saqlaydigan oddiy kolleksiya. Bu kolleksiyada elementlar bilan ishlash uchun asosiy metodlar mavjud: qo'shish (add, addAll), o'chirish (remove, removeAll, clear), qidirish (contains, containsAll), kolleksiyaning bo'shligini tekshirish (isEmpty) va o'lcham (size).
Map — tuzilishi "kalit — qiymat" juftlarini tavsiflovchi kolleksiya. Map ichida har bir kalit yagona bo'ladi: qiymati bo'yicha bir xil bo'lgan kalitlar yo'q. Shuningdek, bu kolleksiya ba'zan lug'at (dictionary) deb ham ataladi. Map — bu alohida interfeys. U Collection interfeysini amalga oshirmaydi, lekin Java Collections Framework tarkibiga kiradi.
Map elementlari bilan ishlash uchun asosiy metodlar:
qo'shish (put, putAll)
olish (get, keySet, values, entrySet)
o'chirish (remove, clear)
qidirish (containsKey, containsValue)
kolleksiyaning bo'shligini tekshirish (isEmpty)
o'lcham (size)
Keling endi har birini batafsil ko'rib chiqaylik.
Collection Interfeysi
Collection interfeysi Iterable interfeysini kengaytiradi, va bu interfeysda yagona metod bor iterator(). Bu biz uchun shuni anglatadiki, Iterabledan meros olgan har qanday kolleksiya iteratorni qaytarishga qodir bo'ladi.
Iterator – bu maxsus obyekt bo'lib, uning yordamida har qanday kolleksiyaning elementlariga uning amalga oshirilishi xususiyatlarini inobatga olmasdan kirish mumkin.
Rasmdan ko'rinib turibdiki, Collection interfeysidan 3 ta interfeys meros oladi: List, Queue va Set. Keling, har birini qisqacha ko'rib chiqamiz.
List — tarakatlangan kolleksiya bo'lib, qiymatlar orasida dublikatlarga ruxsat beradi. Bundan boshqa nomlar ham mavjud — ketma-ketlik (sequence), ro'yxat. Listning o'ziga xos xususiyati shundaki, elementlar raqamlangan va ularga raqam (indeks) orqali murojaat qilish mumkin.
Queue — inglizchadan tarjima qilinganda navbat ma'nosini anglatadi. To'g'ri talaffuz qilish: Queue — KЬЮ. Queueda elementlar ularni navbatga qo'shish tartibida saqlanadi.
Set – ro'yxatdan farqli o'laroq, elementlar takrorlanmasligi sharti bilan tartiblanmagan kolleksiya. Set matematikadagi tushuncha bo'lgan to'plam (set) bilan mos keladi.
Map Interfeysi Amalga oshirishlari
Map interfeysida biz o'ziga xos kalitlar va qiymatlar bilan munosabatni ko'ramiz.
interface Map<K, V>
bu yerda K — kalitlar turi, va V — saqlanadigan qiymatlar turi.
Kalit orqali biz Mapdan ma'lumotlarni chiqarib olishimiz mumkin. Mapga element qo'shish uchun kalit va qiymat belgilash kerak.
Keling ba'zi Map amalga oshirishlarini ko'rib chiqamiz:
HashMap — xesh-jadvallar asosida Mapning amalga oshirilishi. Har qanday turdagi kalitlar va qiymatlarni, shu jumladan null saqlash mumkin. Elementlarning tartibi kafolatlanmagan.
LinkedHashMap — ma'lumotlarni bog'langan ro'yxat ko'rinishida saqlaydigan ma'lumotlar tuzilmasi. Elementlar qo'shilgan tartibda joylashgan.
TreeMap — SortedMap interfeysini ( NavigableMap orqali) amalga oshiradi. Bunday tuzilishda elementlar saralangan holda saqlanadi (yangi element qo'shilsa, kolleksiya avtomatik ravishda saralanadi). TreeMap katta hajmdagi saralangan ma'lumotlarni saqlash va tezkor qidiruvni amalga oshirish uchun juda qulay.
Eski kolleksiyalar
Oldingi versiyalaridan joriy bo'lgan Java'da eski kolleksiyalar mavjud (orqaga moslashuvchanlikni saqlash uchun), va ularni ishlatish tavsiya etilmaydi:
Enumeration — Iterator interfeysining analogi;
Vector — elementlarning tartiblangan ro'yxati, ArrayList klassining analo
Stack — bu elementlarni stek printsipiga ko'ra saqlaydigan tuzilma (masalan, kitoblar stoli), unda elementlarni itarish (push) va chiqarish (pop) metodlari mavjud;
Dictionary — Map interfeysining analo, lekin bu abstrakt klass;
Hashtable — HashMapning analo.
Collections Framework haqida ko'proq ushbu maqolada o'qishingiz mumkin.
GO TO FULL VERSION