Bosh sahifa Wiki Collection

Collection

Collection — ma’lumotlarni bir guruh sifatida saqlash, boshqarish va ustida amallar bajarish uchun ishlatiladigan umumiy tuzilma yoki konteynerdir. Atama dasturlash tillaridagi list, set va map oilasini ham, hujjatli ma’lumotlar bazasidagi recordlar guruhini ham anglatishi mumkin. Aniq xulq tartib, uniqueness, type, mutability va concurrency kafolatlari bilan belgilanadi.

Dasturlashdagi kolleksiyalar

List elementlarni tartibda saqlaydi va dublikatga ruxsat beradi. Array indeks bo‘yicha tez murojaat qiladi, lekin o‘rtaga insert elementlarni ko‘chirishni talab qilishi mumkin. Linked list insert uchun pointerlarni almashtiradi, ammo tasodifiy indeksga yurib boradi va cache localitysi past.

Set elementning mavjudligini va uniquenessni boshqaradi. Hash set o‘rtacha tez membership beradi, tartiblangan tree set esa range va sorted iteratsiyani qo‘llaydi. Map keyni valuega bog‘laydi; key uniqueness va hash/equality qoidasi muhim. Bir obyekt key sifatida ishlatilgach uning hashga ta’sir qiluvchi maydonini o‘zgartirish entryni topilmas qilishi mumkin.

Queue FIFO, stack LIFO semantikasiga ega. Priority queue eng yuqori ustuvor elementni chiqaradi, odatda heap bilan quriladi. Deque ikki uchidan qo‘shish va olishni qo‘llaydi. To‘g‘ri tuzilma faqat Big O bilan emas, element soni, cache, memory overhead va access pattern bilan tanlanadi.

Iterator va o‘zgarish

Collection iterator orqali ichki implementatsiyani oshkor qilmasdan yuriladi. Iteratsiya paytida collection o‘zgarsa ayrim API fail-fast xato beradi, ayrimi snapshot ko‘radi, boshqasi weakly consistent natija beradi. Bu semantika parallel kodda muhim.

Immutable collection update o‘rniga yangi versiya qaytaradi va strukturaviy sharingdan foydalanishi mumkin. U threadlar orasida xavfsiz ulashiladi. Mutable collection uchun lock, concurrent implementatsiya yoki actor ownership kerak. “Thread-safe” bir nechta amaldan iborat invariantni avtomatik atomar qilmaydi.

Database collection

Document database collectionni JSONga o‘xshash hujjatlar guruhi sifatida ishlatadi. Relatsion tablega o‘xshash bo‘lsa ham barcha hujjat ayni maydonlarga ega bo‘lishi shart emas. Schema validation required field va type ni nazorat qilishi mumkin. Index queryni tezlashtiradi, ammo yozish va joy xarajati bor.

Collection shard key bo‘yicha partitionlanishi va replica setda nusxalanishi mumkin. Capped collection qat’iy hajm yoki insert tartibini saqlash uchun maxsus xulqqa ega bo‘lishi mumkin. TTL index muddati tugagan hujjatlarni fon rejimida olib tashlaydi; bu aniq sekunddagi hard realtime delete emas.

API dizayni

Collection qaytaruvchi API bo‘sh natijada null emas, bo‘sh collection qaytarsa consumer soddalashadi. Pagination katta guruhni bir javobga yuklamaydi. Offset pagination tez o‘zgaruvchi to‘plamda skip va dublikat berishi mumkin; cursor barqaror sorting keydan foydalanadi.

Serialization element tartibini saqlashi kerak bo‘lsa formatda aniq belgilanadi. Setni JSON arrayga aylantirish tartib kafolatini yaratmaydi. Equality ba’zan element tartibini, ba’zan faqat a’zolikni hisobga oladi. Collection kontrakti ushbu semantikani test va hujjatda ochiq beradi.

Tanlash mezonlari

Collection turini tanlashda elementga murojaat usuli, tartib, takroriy qiymatlar va o‘zgartirish chastotasi hisobga olinadi. Indeks bo‘yicha tez o‘qish kerak bo‘lsa massiv, a’zolikni tekshirish ustun bo‘lsa to‘plam, kalit orqali topish kerak bo‘lsa xarita mos keladi. Noto‘g‘ri tuzilma kichik testda sezilmasa ham katta hajmda vaqt va xotira sarfini keskin oshiradi.

Bog‘liq tushunchalar

List, Set, Map, Iterator, Document database, Data structure, Generic type