JavaRush /Java blogi /Random-UZ /Kofe tanaffusi №185. Java Collection Framework bo'yicha k...

Kofe tanaffusi №185. Java Collection Framework bo'yicha keng qamrovli qo'llanma

Guruhda nashr etilgan
Manba: O'rta Ushbu qo'llanma Java Collection Framework tarkibiga kiritilgan turli sinflar va interfeyslarning ishlashini yaxshiroq tushunishga yordam beradi. Kofe tanaffusi №185.  Java Collection Framework bo'yicha keng qamrovli qo'llanma - 1Java Collection - bu ob'ektlar guruhini saqlash va boshqarish uchun yagona arxitekturani ta'minlovchi ramka. Asosan, bu Java tilida ob'ektlar to'plamini ko'rsatish va boshqarishning standart usulini ta'minlovchi sinflar va interfeyslar to'plamidir. Ramka shuningdek, Ro'yxat, Set va Xarita kabi tez-tez ishlatiladigan ma'lumotlar tuzilmalarini amalga oshirishda yordam beradi. Java Collection Framework bir nechta interfeys va sinflarni o'z ichiga oladi. Mana ulardan ba'zilari ro'yxati:

Interfeyslar

Java Collection Framework-dagi interfeyslar to'plamlarda bajarilishi mumkin bo'lgan umumiy xatti-harakatlar va operatsiyalarni belgilaydi. Bunga elementlarni qo'shish yoki olib tashlash, to'plamdagi narsalarni takrorlash va boshqalar kiradi.
  • To'plam : Elementlar deb nomlanuvchi ob'ektlar guruhini ifodalovchi to'plam ierarxiyasidagi ildiz interfeysi.
  • Ro'yxat : takrorlashga ruxsat beruvchi elementlarning tartiblangan to'plami.
  • Set : takrorlashga ruxsat bermaydigan elementlar to'plami.
  • Xarita : har bir kalit noyob bo'lgan kalit-qiymat juftliklari to'plami.
  • Navbat : Navbat - bu elementlarni First-In-First-Out (FIFO) da saqlash uchun foydalaniladigan maʼlumotlar strukturasi.
Ushbu ro'yxat hamma narsani o'z ichiga olmaydi, faqat Java Collection Framework-dagi eng ko'p ishlatiladigan interfeyslarni o'z ichiga oladi. Endi ularning har birini batafsil ko'rib chiqaylik.

To'plam

To'plam - bu uning elementlari deb nomlanuvchi ob'ektlar guruhi. Bu boshqa ob'ektlarga havolalarni o'z ichiga olishi mumkin bo'lgan ob'ekt. To'plam interfeysi to'plam ierarxiyasining ildizidir. Bu Java Collection Framework-dagi barcha to'plamlar uchun asosiy interfeysdir. U barcha to'plamlarda qo'llanilishi kerak bo'lgan asosiy usullarni belgilaydi, masalan, add() , remove() va contains() . Java Collection Framework-da to'plamlardan foydalanishga misol. Bu erda Collection interfeysi to'plamga elementlarni qo'shish va olib tashlash uchun ishlatiladi:
import java.util.Collection;
import java.util.ArrayList;

public class CollectionExample {
    public static void main(String[] args) {
        // Создаем новую коллекцию
        Collection<String> stringCollection = new ArrayList<>();

        // Добавляем несколько элементов в коллекцию
        stringCollection.add("hello");
        stringCollection.add("world");
        stringCollection.add("foo");
        stringCollection.add("bar");

        // Печатаем число элементов в коллекции
        System.out.println("Number of elements: " + stringCollection.size());

        // Удаляем элемент из коллекции
        stringCollection.remove("foo");

        // Опять печатаем число элементов в коллекции
        System.out.println("Number of elements: " + stringCollection.size());
    }
}
Chiqish:
Elementlar soni: 4 Elementlar soni: 3
Ko'rib turganingizdek, Collection interfeysi ob'ektlar to'plami bilan umumiy operatsiyalarni bajarishning oddiy va qulay usulidir. Ko'pincha Java-da to'plamlar bilan ishlashda boshlang'ich nuqta sifatida ishlatiladi. Java Collection Framework turli xil to'plamlar uchun umumiy xatti-harakatlarni belgilaydigan bir nechta interfeyslarni o'z ichiga oladi. Ulardan ba'zilari java.util.Collection interfeys guruhining bir qismidir :
  • java.util.List
  • java.util.set
  • java.util.Queue

java.util.List

Ro'yxat - har bir elementi ro'yxatda ma'lum bir pozitsiyani egallagan ob'ektlarning tartiblangan to'plami. Ro'yxat interfeysi To'plam interfeysini kengaytiradi va ro'yxatlar bilan ishlashning bir necha usullarini qo'shadi, masalan, ro'yxatdagi joylashuvi bo'yicha elementlarga kirish usullari va ro'yxatlarni qidirish va saralash usullari. Ro'yxat ikki nusxadagi elementlarni o'z ichiga olishi mumkin , bu elementlarga ularning ro'yxatdagi joylashuvi bo'yicha kirish mumkin. Roʻyxatdagi elementlarni qoʻshish, oʻchirish va ularga kirish uchun Roʻyxat interfeysidan foydalanishga misol:
import java.util.List;
import java.util.ArrayList;

public class ListExample {
    public static void main(String[] args) {
        // Создаем новый список
        List<String> stringList = new ArrayList<>();

        // Добавляем несколько элементов в список
        stringList.add("India");
        stringList.add("UAE");
        stringList.add("London");
        stringList.add("US");

        // Печатаем первый элемент в списке
        System.out.println("First element: " + stringList.get(0));

        // Удаляем второй элемент из списка
        stringList.remove(1);

        // Печатаем второй элемент в списке
        System.out.println("Second element: " + stringList.get(1));
    }
}
Xulosa:
Birinchi element: Hindiston Ikkinchi element: London
Yuqorida ko'rsatilganidek, List interfeysi elementlarning tartiblangan to'plamlari bilan ishlashning qulay usulini taqdim etadi. U odatda to'plamdagi elementlar tartibini saqlash kerak bo'lganda yoki ro'yxatdagi elementlarga ularning indeksi bo'yicha kirish kerak bo'lganda foydalaniladi.

java.util.Set

Java Collection Framework'dagi to'plam - takroriy elementlarga ruxsat bermaydigan noyob elementlarning tartibsiz to'plami . To'plam interfeysi To'plam interfeysini kengaytiradi va bir nechta usullarni qo'shadi, masalan, to'plamda element mavjudligini tekshirish usullari va to'plamdan elementlarni qo'shish va olib tashlash usullari. Java Collection Framework to'plamiga elementlarni qo'shish va o'chirish uchun Set interfeysidan foydalanishga misol:
import java.util.Set;
import java.util.HashSet;

public class SetExample {
    public static void main(String[] args) {
        // Создаем новый set
        Set<String> stringSet = new HashSet<>();

        // Добавляем несколько элементов в set
        stringSet.add("Jan");
        stringSet.add("Feb");
        stringSet.add("March");
        stringSet.add("April");

        // Проверяем наличие в set element "March"
        if (stringSet.contains("March")) {
            System.out.println("The set contains the element 'March'");
        }

        // Удаляем элемент "April" из set
        stringSet.remove("April");

        // Опять проверяем наличие element "April" в set
        if (!stringSet.contains("April")) {
            System.out.println("The set no longer contains the element 'April'");
        }
    }
}
Xulosa:
To‘plamda “Mart” elementi mavjud. To‘plamda “Aprel” elementi yo‘q.

java.util.Queue

Navbat - bu elementlarni birinchi kelgan birinchi chiqadi (FIFO) tartibida saqlash uchun foydalaniladigan ma'lumotlar strukturasi. Bu navbatga qo'shilgan birinchi element olib tashlangan birinchi element bo'lishini anglatadi. Java Collection Framework-da navbatdan qanday foydalanishga misol:
// Creation очереди
Queue<String> queue = new LinkedList<>();

// Добавление элементов в очередь
queue.add("apple");
queue.add("banana");
queue.add("orange");
// Печатаем очередь
System.out.println("Queue: " + queue);
// Удаляем элемент из очереди
String element = queue.remove();
System.out.println("Removed element: " + element);
// Печатаем обновленную очередь
System.out.println("Queue: " + queue);
Ushbu misolda biz qatorli navbat yaratdik va unga uchta element qo'shdik: "olma", "banan" va "apelsin". Keyin navbatni hozirgi holatini ko'rish uchun chop etamiz. Keyinchalik, elementni navbatdan olib tashlaymiz va uni konsolga chop etamiz. Nihoyat, olib tashlangan element navbatda emasligini ta'minlash uchun yangilangan navbatni chop etamiz.

Xarita

Java Collection Framework-dagi java.util.Map interfeysi kalitlarni qiymatlarga moslashtirish uchun ishlatiladi. U elementlarni kalit-qiymat juftlari sifatida saqlash imkonini beradi va xaritadagi elementlarga kirish, o‘zgartirish va takrorlash usullarini taqdim etadi. Quyida Map interfeysidan foydalanish misoli keltirilgan :
// Создаем Map
 Map<String, Integer> map = new  HashMap <>();
// Добавляем элементы в Map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печать Map
 System.out.println("Map: " + map);
// Получаем meaning для определенного ключа
int  value  = map.get( "banana" );
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из Map
map.remove("orange");
// Печать обновленной карты
 System.out.println( "Map: " + map);
Ushbu misolda biz unga uchta elementni qo'shish orqali satrlar va butun sonlar xaritasini yaratamiz: "olma" 1ga mos keladi, "banan" 2ga mos keladi va "apelsin" 3 mos keladi. Keyin uning joriy ma'nosini ko'rish uchun xaritani chop etamiz. Shundan so'ng biz "banan" kalitining qiymatini olamiz va uni konsolga chop etamiz. Nihoyat, biz "to'q sariq" uchun kalit-qiymat juftligini xaritadan olib tashlaymiz va olib tashlangan element endi yo'qligini ko'rish uchun yangilangan xaritani chop etamiz.

Sinflar

Sinf - bu yig'ish interfeysining aniq amalga oshirilishi. U ramkadagi interfeyslar tomonidan aniqlangan umumiy xatti-harakatlar va operatsiyalarning o'ziga xos ilovalarini taqdim etadi.
  • ArrayList : o'lchami o'zgartiriladigan massiv bilan List interfeysining amalga oshirilishi .
  • LinkedList : ikki marta bog'langan ro'yxat, List va Deque interfeyslarining amalga oshirilishi .
  • HashSet : Saqlash uchun xesh jadvalidan foydalanadigan Set ilovasi .
  • TreeSet : saqlash uchun daraxtdan foydalanadigan to'plamning amalga oshirilishi .
  • HashMap : Saqlash uchun xesh-jadvaldan foydalanadigan Xarita ilovasi .
Yuqoridagi ro'yxat Java Collection Framework-da eng ko'p ishlatiladigan sinflardan biridir. Keling, ushbu sinflarning batafsil tushuntirishlarini ko'rib chiqaylik.

ArrayList

Java to'plamlaridagi java.util.ArrayList klassi ro'yxatdagi elementlarning o'lchamlari o'zgartiriladigan massivni saqlash uchun ishlatiladi. Bu java.util.List interfeysining keng qoʻllaniladigan ilovasi boʻlib , elementlarni saqlash uchun massivdan foydalanadi va roʻyxatdagi elementlarga kirish, oʻzgartirish va takrorlashning samarali usullarini taqdim etadi. Java.util.ArrayList klassi uning elementlariga tez tasodifiy kirishni ta'minlaydi, lekin tasodifiy pozitsiyalarda sekin kiritish va olib tashlash. Quyida Java Collection Framework-da ArrayList sinfidan foydalanishga misol keltirilgan :
// Создаем array list
List<String> list = new ArrayList<>();
// Добавляем элементы в array list
list.add("qa");
list.add("devops");
list.add("dev");
// Печатаем array list
System.out.println("Array list: " + list);
// Доступ к элементу по определенному индексу
String element = list.get(1);
System.out.println("Element at index 1: " + element);
// Удаление element из the array list
list.remove(1);
// Print the updated array list
System.out.println("Array list: " + list);
Ko'rib turganingizdek, biz qatorlar qatorini yaratdik va unga uchta element qo'shdik: "qa", "devops" va "dev". Keyin biz uning joriy holatini ko'rish uchun massiv ro'yxatini chop etdik. Shundan so'ng biz 1-indeksdagi elementga kiramiz va uni konsolga chop qilamiz. Nihoyat, biz 1-indeksdagi elementni massivlar roʻyxatidan olib tashlaymiz va oʻchirilgan element endi roʻyxatda yoʻqligiga ishonch hosil qilish uchun yangilangan massiv roʻyxatini chop etamiz.

Bog'langan ro'yxat

Java Collection Framework'dagi java.util.LinkedList sinfi AbstractList sinfidan meros bo'lib , List va Deque interfeyslarini amalga oshiradi . U roʻyxat boshida va oxirida elementlarni qoʻshish, oʻchirish va ularga kirishning samarali usullarini taqdim etadi. Ushbu sinf, shuningdek , elementlarni saqlash uchun ikki marta bog'langan ro'yxatni ishlatadigan Ro'yxat interfeysining amalga oshirilishidir . U ixtiyoriy pozitsiyalarda tez qo'shish va o'chirishni ta'minlaydi, lekin uning elementlariga tasodifiy kirishni sekinlashtiradi. Java Collection Framework-da LinkedList sinfidan qanday foydalanishga misol :
// Создаем linked list
List<String> list = new LinkedList<>();
// Добавляем элементы в linked list
list.add("selenium");
list.add("cypress");
list.add("playwright");
// Печатаем linked list
System.out.println("Linked list: " + list);
// Добавляем элемент в начало списка
list.add(0, "webdriver.io");
// Печатаем обновленный linked list
System.out.println("Linked list: " + list);
// Удаляем первый элемент в списке
list.remove(0);
// Еще раз печатаем обновленный linked list
System.out.println("Linked list: " + list);
Ushbu misolda biz torlarning bog'langan ro'yxatini yaratdik va unga uchta element qo'shdik: "selenium", "sarv" va "dramaturg". Keyin biz uning joriy holatini ko'rish uchun bog'langan ro'yxatni chop etamiz. Keyinchalik, ro'yxatning boshiga "webdriver.io" elementini qo'shamiz va yangilangan bog'langan ro'yxatni chop etamiz. Nihoyat, biz ro'yxatdan birinchi elementni olib tashlaymiz va o'chirilgan element endi ro'yxatda yo'qligini ko'rish uchun yangilangan bog'langan ro'yxatni yana chop etamiz.

HashSet

Java Collection Framework-dagi java.util.HashSet klassi to'plamdagi noyob elementlar to'plamini saqlash uchun ishlatiladi. U java.util.Set interfeysining xesh-jadval asosida amalga oshirilishini ta'minlaydi. Shuningdek, u tezkor kiritish, o'chirish va qidirishni ta'minlaydi, lekin uning elementlari tartibini saqlamaydi. Quyida Java Collection Framework-da HashSet sinfidan foydalanishga misol keltirilgan :
// Создаем hash set
Set<String> set = new HashSet<>();

// Добавляем элементы в hash set
set.add("rose");
set.add("lily");
set.add("lotus");
// Попытка добавить повторяющийся элемент
set.add("rose");
// Печатаем hash set
System.out.println("Hash set: " + set);
// Удаляем элемент из hash set
set.remove("lily");
// Печать обновленного hash set
System.out.println("Hash set: " + set);
Bu erda biz satrlar to'plamini yaratdik va unga uchta element qo'shdik: "atirgul", "nilufar" va "lotus". Keyin yana "rose" elementini qo'shishga harakat qilamiz, lekin xesh to'plami dublikatlarga ruxsat bermagani uchun u qo'shilmaydi. Shundan so'ng biz hozirgi holatini ko'rish uchun xesh to'plamini chop etamiz. Keyin biz "lily" elementini to'plamdan olib tashlaymiz va olib tashlangan element to'plamda yo'qligini ko'rish uchun to'plamning yangilangan xeshini chop etamiz.

Tree Set

Java Collection Framework-dagi java.util.TreeSet klassi o'sish tartibida tartiblangan to'plamdagi noyob elementlar to'plamini saqlash uchun ishlatiladi. U takroriy elementlarga ruxsat bermasdan elementlarni saqlash uchun java.util.Set interfeysining daraxtga asoslangan amalga oshirilishini ta'minlaydi . Sinf tez qo'shish, o'chirish va qidirishni ta'minlaydi va uning elementlarining tabiiy tartibi yoki taqqoslagichiga ko'ra tartibini saqlaydi. Java Collection Framework-da TreeSet sinfidan qanday foydalanishga misol :
// Создаем tree set
Set<String> set = new TreeSet<>();

// Добавляем элементы в tree set
set.add("apple");
set.add("banana");
set.add("orange");
// Попытка добавить повторяющийся элемент
set.add("apple");
// Печатаем tree set
System.out.println("Tree set: " + set);
// Удаляем элемент из tree set
set.remove("banana");
// Печатаем обновленный tree set
System.out.println("Tree set: " + set);
Ushbu misolda biz daraxt qatorlarini yaratamiz va unga uchta element qo'shamiz: "olma", "banan" va "apelsin". Keyin yana "olma" elementini qo'shishga harakat qilamiz, lekin daraxt to'plami dublikatlarga ruxsat bermagani uchun u qo'shilmaydi. Shundan so'ng biz hozirgi holatini ko'rish uchun daraxt to'plamini chop etamiz. Daraxtlar to'plami o'sish tartibida tartiblanganligi sababli, elementlar quyidagi tartibda chop etiladi: "olma", "banan" va "apelsin". Keyin to'plamdan "banan" elementini olib tashlaymiz va olib tashlangan element to'plamda yo'qligini ko'rish uchun yangilangan daraxt to'plamini chop etamiz.

HashMap

Java Collection Framework-dagi java.util.HashMap klassi kalitlarni xaritadagi qiymatlarga moslashtirishni saqlash uchun ishlatiladi. U java.util.Map interfeysining xesh-jadval asosida amalga oshirilishini ta'minlaydi va elementlarni kalit-qiymat juftliklari sifatida saqlashga imkon beradi. Sinf tez qo'shish, o'chirish va qidirishni ta'minlaydi, lekin uning elementlari tartibini saqlamaydi. Java Collection Framework-da HashMap sinfidan qanday foydalanishga misol :
// Создаем hash map
Map<String, Integer> map = new HashMap<>();

// Добавляем элементы в hash map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печатаем hash map
System.out.println("Hash map: " + map);
// Получаем meaning для определенного ключа
int value = map.get("banana");
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из hash map
map.remove("orange");
// Печатаем обновленный hash map
System.out.println("Hash map: " + map);
Ushbu misolda biz butun son satrlarining xesh xaritasini yaratamiz va unga uchta element qo'shamiz: "olma" 1ga, "banana" 2ga va "apelsin" 3ga mos keladi. Keyin uni Joriy holatni ko'rish uchun xesh xaritasini chop etamiz. Shundan so'ng biz "banan" kalitining qiymatini olamiz va uni konsolga chop etamiz. Nihoyat, biz "apelsin" uchun kalit-qiymat juftligini xesh xaritasidan olib tashlaymiz va olib tashlangan element endi unda yo'qligini ko'rish uchun yangilangan xesh xaritasini chop etamiz.

Xulosa

Java Collection Framework - bu Java dasturlash tilida ob'ektlar to'plamini ko'rsatish va manipulyatsiya qilishning standart usulini ta'minlovchi sinflar va interfeyslar to'plami. Bu ishlab chiquvchilar/sinovchilarga ob'ektlar to'plami bilan izchil va samarali ishlash imkonini beradi. Ramka ularni to'plamdagi elementlarni saqlash, ularga kirish va boshqarish usullari bilan ta'minlaydi va ularga ilova talablariga qarab turli to'plam ilovalari o'rtasida osongina almashish imkonini beradi.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION