Arraylist vs Vektor
Masiv roʻyxatini hajmi kattalashishi mumkin boʻlgan dinamik massiv sifatida koʻrish mumkin. Shu sababli, dasturchi massivlar ro'yxatini aniqlayotganda uning hajmini bilishi shart emas. Vektorni hajmi kattalashishi mumkin bo'lgan massiv sifatida ham ko'rish mumkin. Vektorlarni osongina ajratish mumkin va kerakli xotira hajmi ish vaqtigacha noma'lum bo'lganda foydalanish mumkin.
Arraylist nima?
Masiv roʻyxatini hajmi kattalashishi mumkin boʻlgan dinamik massiv sifatida koʻrish mumkin. Shuning uchun massiv ro'yxatlari siz e'lon qilish vaqtida talab qilinadigan elementlarning hajmini bilmaydigan vaziyatda foydalanish uchun idealdir. Java-da massiv ro'yxatlari faqat ob'ektlarni ushlab turishi mumkin, ular to'g'ridan-to'g'ri ibtidoiy turlarni ushlab turolmaydi (siz ibtidoiy tiplarni ob'ekt ichiga qo'yishingiz yoki ibtidoiy turlarning o'rash sinflaridan foydalanishingiz mumkin). Odatda massiv ro'yxatlari kiritish, o'chirish va qidirishni amalga oshirish usullari bilan ta'minlangan. Elementga kirishning vaqt murakkabligi o(1), kiritish va oʻchirish esa o(n) ga teng. Java-da massiv ro'yxatlarini foreach tsikllari, iteratorlar yoki oddiygina indekslar yordamida bosib o'tish mumkin. Java-da massiv roʻyxatlari 1.2-versiyasidan boshlab kiritilgan va u Java Collections Frameworkning bir qismidir.
Vektor nima?
Vektor ham hajmi kattalashishi mumkin boʻlgan massivdir. Vektorlarni osongina ajratish mumkin va saqlashning kerakli hajmi ish vaqtigacha noma'lum bo'lganda foydalanish mumkin. Vektorlar faqat ob'ektlarni ushlab turishi mumkin va ibtidoiy turlarni ushlab turolmaydi. Vektorlar sinxronlashtiriladi, shuning uchun ularni ko'p tarmoqli muhitda xavfsiz ishlatish mumkin. Vektorlar ob'ektlarni qo'shish, ob'ektlarni o'chirish va ob'ektlarni qidirish usullari bilan ta'minlangan. Java-dagi massiv ro'yxatiga o'xshab, vektorlarni foreach tsikllari, iteratorlar yoki oddiygina indekslar yordamida bosib o'tish mumkin. Java haqida gap ketganda, vektorlar Java ning birinchi versiyasidan beri kiritilgan.
Arraylist va vektor oʻrtasidagi farq nima?
Garchi massiv roʻyxatlari ham, vektorlar ham hajmi oʻsishi mumkin boʻlgan dinamik massivlarga juda oʻxshash boʻlsa-da, ular bir qancha muhim farqlarga ega. Massiv ro'yxatlari va vektorlar o'rtasidagi asosiy farq shundaki, vektorlar sinxronlashtiriladi, massiv ro'yxatlari esa sinxronlashtirilmaydi. Shuning uchun massiv ro'yxatlarini ko'p oqimli muhitda ishlatish mos kelmaydi, vektorlardan esa ko'p oqimli muhitda xavfsiz foydalanish mumkin (chunki ular ip xavfsiz). Ammo vektorlardagi sinxronizatsiya ishlashning pasayishiga olib keladi. Shuning uchun vektorlarni bitta tishli muhitda ishlatish yaxshi fikr emas. Ichkarida, massiv ro'yxatlari ham, vektorlar ham ob'ektlarni ushlab turish uchun massivlardan foydalanadilar. Joriy bo'sh joy etarli bo'lmaganda, vektorlar ichki massiv hajmini ikki baravar oshiradi, massiv ro'yxatlari esa ichki massiv hajmini 50% ga oshiradi. Ammo massiv ro'yxatlari va vektorlardan foydalanganda, mos keladigan boshlang'ich sig'imni berish orqali ichki massivning keraksiz o'lchamlarini o'zgartirishning oldini olish mumkin. Ma'lumotlarning o'sish tezligi ma'lum bo'lgan vaziyatda vektorlardan foydalanish ko'proq mos keladi, chunki vektorlarning o'sish qiymatini aniqlash mumkin.