1. Konteinlar va kollektsiyalar
Konteinlar yoki kollektsiyalar bu ko'p obyektlarni bir vaqtning o'zida saqlash va qayta ishlashni ta'minlaydigan klasslar. Siz allaqachon ikki turdagi konteynerlarni bilasiz — massivlar va ro'yxatlar.
Java da bir necha o'nlab kollektsiyalar mavjud bo'lib, har biri o'ziga xos usulda elementlarni saqlaydi. Mana ulardan ba'zilari:
| Kolleksiya turi | Klass | Tavsif |
|---|---|---|
|
|
Ro'yxat |
|
Ulanma ro'yxat | |
|
Vektor | |
|
Stack (qoziq) | |
|
|
Mnojestvo |
|
||
|
||
|
|
Navbat |
|
||
|
|
Map/Slovar |
|
||
|
||
Bu yerda nomlardagi biroz noaniqliklar mavjud. Ko'pgina dasturlash tillarida bu ma'lumotlar tuzilmalariga kollektsiyalar deb ataladi, lekin Java da bunday emas. Java tilida bu klasslardan ba'zilari Collection interfeysini amalga oshiradi, qolganlari esa yo'q.
Shuning uchun kollektsiyalar keng ma'nodagi kollektsiyalar va tor ma'nodagi kollektsiyalar (faqat Collection interfeysini amalga oshiradiganlar) sifatida bo'linadi.
Shuning uchun chalkashmaslik uchun, faqat tor ma'nodagi kollektsiyalar (klasslar Collection interfeysini amalga oshirishi kerak) kollektsiyalar deb ataladi. Bu barcha List, Set va Queue turidagi kollektsiyalar. Keng ma'nodagi kollektsiyalar konteinlar deb ataladi. Ular Map turidagi klasslar va massivlarni o'z ichiga oladi.
2. HashSet Kolleksiya
HashSet klassi «mnojestvo» tipidagi kollektsiyalarning tipik vakili. U juda ArrayList klassiga o'xshaydi va ma'lum ma'noda uning ko'proq boshlang'ich versiyasi hisoblanadi.
HashSet turidagi obyektni quyidagi ko'rinishdagi buyruq yordamida yaratish mumkin:
HashSet<Тип> нoм = new HashSet<Тип>();
Bu yerda tur — HashSet kollektsiyasida saqlanadigan elementlarning turi.
HashSet klassida quyidagi metodlar mavjud:
| Metod | Tavsif |
|---|---|
|
value elementini kollektsiyaga qo'shadi |
|
Kollektsiyadan value elementini o'chiradi.true qaytaradi, agar u element mavjud bo'lsa |
|
Kollektsiyada value elementi mavjudligini tekshiradi |
|
Kollektsiyani tozalaydi: barcha elementlarni o'chiradi |
|
Kollektsiyadagi elementlar sonini qaytaradi |
Mnojestvo ishlatish misoli.
Keling, foydalanuvchi bilan salomlashganida u bilan xayrlashuvchi dastur yozamiz: agar foydalanuvchi salom bergan bo'lsa. Qiziqarliroq bo'lishi uchun «salom» bir necha tilda aytilishi mumkin bo'ladi.
| Kod | Izoh |
|---|---|
|
HashSet turidagi obyekt yaratamiz, u String turidagi elementlarni saqlaydi.Turli tillarda salomlarni set ga qo'shamiz. Konsoldan so'z kiritamiz, agar bu so'z salomlar mnojestvosida mavjud bo'lsa, xayr so'zni chop qilamiz (o'zbek tilida). |
3. Mnojestvo
Set kollektsiyasi, mnojestvo elementlarni saqlash uchun yaratilgan. Shuning uchun uni Set (mnojestvo) deb atashadi. Ushbu kollektsiyaning uchta xususiyati mavjud.
Mnojestvo ustida amallar
Mnojestvo ustida faqat uchta amalni bajarish mumkin: elementlarni mnjestvo ga qo'shish, mnojestvo dan elementlarni olib tashlash va mnjestvo da ma'lum element mavjudligini tekshirish. Boshqa hech narsa.
Tartibning yo'qligi
Bu kollektsiyadagi elementlarning tartib raqamlari yo'q. Elementni uning indeksi bo'yicha olish yoki belgilangan indeksga qiymat yozish mumkin emas. Mnojestvo da get() va set() metodlari yo'q.
Elementlarning unikaligi
Hamma mnojestvo elementlari unikaldir. Ro'yxatdan farqli o'laroq, mnojestvo da bir element faqat bir martagina bo'lishi mumkin. Obyekt yoki mnojestvo da joylashgan, yoki yo'q: uchinchi holat mavjud emas. «Ranglar mnojestvosiga» uch marta «qora rang» qo'sha olmaysiz. U yerda yoki bor, yoki yo'q.
Elementlarni qidirish
Mnojestvo ga yangi element qo'shganingizda, elementni olib tashlaganingizda yoki element mavjudligini tekshirganda, metod ichida elementni qidirish bajariladi. Kollektsiyadagi elementlar va berilgan element avval hashCode() orqali, agar hashCode() mos kelsa, equals orqali solishtiriladi.
4. Kollektsiyalar taqqoslashi: List vs Set
Keling, ikki turdagi kollektsiyalarni taqqoslaymiz: List va Set. Ularning asosiy farqlari nimalarda va qachon qaysi birini ishlatish foydali ekanligini ko'rib chiqamiz.
Keling, ro'yxat va mnojestvoni bolalar o'yinchoqlari misolida taqqoslaylik.
List (Ro'yxat) Kolleksiyasi bolalar xonasidagi devor yoniga qo'yilgan o'yinchoqlar to'plamiga o'xshaydi. Ro'yxat oxiriga o'yinchoq qo'shish mumkin. Agar kerak bo'lsa, o'rta joyga ham joylashtirish mumkin (lekin ba'zi o'yinchoqlarni o'zgartirish kerak bo'ladi).
Har bir o'yinchoqning tartib raqami bor. Unga tartib raqamiga ko'ra olib qo'yish yoki 7-raqamli o'yinchoqni 13-raqamli o'yinchoqqa almashtirish mumkin. Ro'yxatdan 4-raqamli o'yinchoqni olib tashlash ham mumkin. Va nihoyat, ro'yxatdagi barcha o'yinchoqlar sonini bilib olish mumkin.
Set (Mnojestvo) Kolleksiyasi bolalar o'yinchoqlarini bir joyga tashlangan koptok kabi ko'rinadi. Koptokga o'yinchoq qo'shish, koptokdan o'yinchoqni olib tashlash mumkin. Ammo bunday o'yinchoqlarning o'rnatilgan tartib raqami yo'q.
Yoki farzandingizga tug'ilgan kuniga o'yinchoq tanlayapsiz. Shunda avvalambor, bunday o'yinchoq bor-yo'qligini o'ylaysiz. Shunda u bor o'yinchoqlar unga sovg'a qilmoqchi bo'lgan o'yinchoqlarni tashkil qiladi.
Bu nuqtai nazardan, "bor" o'yinchoqlar to'plamining tartibi ahamiyatga ega emas, shuningdek, ikkita bir xil o'yinchoqning mavjudligi ham ahamiyatga ega emas. Sizni nafaqat o'yinchoqlar va ularning soni, balki o'yinchoqlarning unikal obyektlar to'plami ham qiziqtiradi.
Mana shunday holatlar uchun sizga Set mnojestvo kerak bo'ladi va uning eng mashhur vakili — HashSet klassi.
GO TO FULL VERSION