JavaRush /Java блогы /Random-KK /Кофе-брейк №185. Java Collection Framework бойынша кешенд...

Кофе-брейк №185. Java Collection Framework бойынша кешенді нұсқаулық

Топта жарияланған
Дереккөз: Орташа Бұл оқулық Java Collection Framework құрамына кіретін әртүрлі сыныптар мен интерфейстердің жұмысын жақсырақ түсінуге көмектеседі. Кофе-брейк №185.  Java Collection Framework бойынша кешенді нұсқаулық - 1Java Collection - бұл нысандар тобын сақтау және басқару үшін біртұтас архитектураны қамтамасыз ететін құрылым. Негізінде бұл Java тіліндегі an objectілер жиынын көрсету және өңдеудің стандартты әдісін қамтамасыз ететін сыныптар мен интерфейстер жиынтығы. Фреймворк сонымен қатар Тізім, Жиын және Карта сияқты жиі қолданылатын деректер құрылымдарын енгізуге көмектеседі. Java Collection Framework құрамына бірнеше интерфейстер мен сыныптар кіреді. Міне, олардың кейбірінің тізімі:

Интерфейстер

Java Collection Framework жүйесіндегі интерфейстер жиындарда орындалатын жалпы әрекет пен әрекеттерді анықтайды. Бұған элементтерді қосу немесе жою, жинақтағы элементтерді қайталау және т.б. кіреді.
  • Коллекция : элементтер ретінде белгілі нысандар тобын көрсететін коллекция иерархиясындағы түбірлік интерфейс.
  • Тізім : қайталауға мүмкіндік беретін элементтердің реттелген жинағы.
  • Жиын : Көшіруге жол бермейтін элементтер жиынтығы.
  • Карта : әрбір кілт бірегей болатын кілт-мән жұптарының жинағы.
  • Кезек : Кезек элементтерді бірінші шыққан (FIFO) ретімен сақтау үшін пайдаланылатын деректер құрылымы.
Бұл тізім барлығын қамтымайды, тек Java Collection Framework ішіндегі ең көп қолданылатын интерфейстерді қамтиды. Енді олардың әрқайсысын толығырақ қарастырайық.

Жинақ

Жинақ - оның элементтері ретінде белгілі нысандар тобы. Бұл басқа нысандарға сілтемелерді қамтитын нысан. Жинақ интерфейсі жинақ иерархиясының түбірі болып табылады. Бұл Java Collection Framework ішіндегі барлық жинақтар үшін негізгі интерфейс. Ол add() , remove() және contain() сияқты барлық жинақтарда орындалуы керек негізгі әдістерді анықтайды . Мұнда Java Collection Framework жүйесінде жинақтарды пайдаланудың мысалы берілген. Мұнда Жинақ интерфейсі жинаққа элементтерді қосу және жою үшін пайдаланылады:
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());
    }
}
Шығару келесідей:
Элемент саны: 4 Элемент саны: 3
Көріп отырғаныңыздай, Коллекция интерфейсі an objectілер жиынтығымен жалпы операцияларды орындаудың қарапайым және ыңғайлы әдісі болып табылады. Ол жиі Java тілінде жинақтармен жұмыс істеу кезінде бастапқы нүкте ретінде пайдаланылады. Java Collection Framework әртүрлі жинақ түрлері үшін жалпы әрекетті анықтайтын бірнеше интерфейстерді қамтиды. Олардың кейбіреулері java.util.Collection интерфейс тобына кіреді :
  • java.util.List
  • java.util.set
  • java.util.Queue

java.util.List

Тізім - әрбір элементі тізімде белгілі бір орынды алатын an objectілердің реттелген жиынтығы. Тізім интерфейсі Жинақ интерфейсін кеңейтеді және тізімдермен жұмыс істеудің бірнеше әдістерін қосады, мысалы тізімдегі орны бойынша элементтерге қол жеткізу әдістері және тізімдерді іздеу және сұрыптау әдістері. Тізімде қайталанатын элементтер болуы мүмкін , бұл элементтерге тізімдегі орны бойынша қол жеткізуге болады. Төменде тізімдегі элементтерді қосу, жою және оларға қол жеткізу үшін Тізім интерфейсін пайдалану мысалы берілген:
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));
    }
}
Қорытынды:
Бірінші элемент: Үндістан Екінші элемент: Лондон
Жоғарыда көрсетілгендей, Тізім интерфейсі элементтердің реттелген жинақтарымен жұмыс істеудің ыңғайлы әдісін ұсынады. Ол әдетте жинақтағы элементтердің ретін сақтау қажет болғанда немесе тізімдегі индексі бойынша элементтерге қатынасу қажет болғанда пайдаланылады.

java.util.Set

Java Collection Framework жүйесіндегі жиын қайталанатын элементтерге жол бермейтін бірегей элементтердің ретсіз жиынтығы болып табылады . Жиын интерфейсі Жинақ интерфейсін кеңейтеді және элементтің жиында бар-жоғын тексеру әдістері және жиыннан элементтерді қосу және жою әдістері сияқты бірнеше әдістерді қосады. Мұнда Java Collection Framework жинағына элементтерді қосу және жою үшін Set интерфейсін пайдалану мысалы берілген:
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'");
        }
    }
}
Қорытынды:
Жиынта "Наурыз" элементі бар Жиында "Сәуір" элементі енді жоқ.

java.util.Queue

Кезек элементтерді бірінші келген бірінші шығыс (FIFO) ретімен сақтау үшін пайдаланылатын деректер құрылымы болып табылады. Бұл кезекке қосылған бірінші элемент жойылған бірінші элемент болатынын білдіреді. Мұнда Java Collection Framework жүйесінде кезекті пайдаланудың мысалы берілген:
// 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);
Бұл мысалда біз жол кезегін жасап, оған үш элемент қостық: «алма», «банан» және «апельсин». Содан кейін оның ағымдағы күйін көру үшін кезекті басып шығарамыз. Әрі қарай, элементті кезектен алып тастап, оны консольге басып шығарамыз. Соңында, жойылған элементтің кезекте жоқтығына көз жеткізу үшін жаңартылған кезекті басып шығарамыз.

Карта

Java Collection Framework жүйесіндегі java.util.Map интерфейсі кілттерді мәндерге салыстыру үшін пайдаланылады. Ол элементтерді кілт-мән жұптары ретінде сақтауға мүмкіндік береді және картадағы элементтерге қатынасу, өзгерту және қайталау әдістерін қамтамасыз етеді. Төменде Map интерфейсін пайдалану мысалы берілген :
// Создаем 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);
Бұл мысалда біз оған үш элемент қосу арқылы жолдар мен бүтін сандар картасын жасаймыз: «алма» 1 сәйкес келеді, «банан» 2 сәйкес келеді және «апельсин» 3 сәйкес келеді. Содан кейін оның ағымдағы мағынасын көру үшін картаны басып шығарамыз. Осыдан кейін біз «банан» кілтінің мәнін аламыз және оны консольге басып шығарамыз. Соңында, біз картадан «қызғылт сары» кілт-мән жұбын алып тастаймыз және жойылған элемент енді жоқ екенін көру үшін жаңартылған картаны басып шығарамыз.

Сабақтар

Класс - бұл коллекция интерфейсінің нақты орындалуы. Ол рамкадағы интерфейстермен анықталған жалпы әрекеттер мен операциялардың нақты іске асырылуын қамтамасыз етеді.
  • ArrayList : Өлшемі өзгертілетін массиві бар Тізім интерфейсін іске асыру .
  • LinkedList : қос байланысқан тізім, List және Deque интерфейстерінің жүзеге асырылуы .
  • HashSet : сақтау үшін хэш кестесін пайдаланатын жиынның жүзеге асырылуы .
  • TreeSet : Сақтау үшін ағашты пайдаланатын жиынды іске асыру .
  • HashMap : сақтау үшін хэш кестесін пайдаланатын Картаның жүзеге асырылуы .
Жоғарыдағы тізім Java Collection Framework жүйесіндегі ең жиі қолданылатын сыныптардың бірі болып табылады. Енді осы сабақтардың егжей-тегжейлі түсіндірмесін қарастырайық.

Массивтер тізімі

Java жинақтарындағы java.util.ArrayList класы тізімдегі элементтердің өлшемі өзгертілетін массивін сақтау үшін пайдаланылады. Бұл элементтерді сақтау үшін массив пайдаланатын және тізімдегі элементтер арқылы қол жеткізу, өзгерту және қайталау үшін тиімді әдістерді қамтамасыз ететін java.util.List интерфейсінің кеңінен қолданылатын іске асыруы. java.util.ArrayList класы оның элементтеріне жылдам кездейсоқ қол жеткізуді қамтамасыз етеді, бірақ кездейсоқ позицияларда баяу кірістіру және жою. Төменде Java Collection Framework жүйесінде ArrayList класын пайдалану мысалы берілген :
// Создаем 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);
Көріп отырғаныңыздай, біз жолдар массивін жасадық және оған үш элемент қостық: «qa», «devops» және «dev». Содан кейін оның ағымдағы күйін көру үшін массивтер тізімін басып шығардық. Осыдан кейін біз 1 индексіндегі элементке қол жеткізіп, оны консольге басып шығарамыз. Соңында, 1-индекстегі элементті массивтер тізімінен алып тастаймыз және жойылған элемент тізімде енді жоқ екеніне көз жеткізу үшін жаңартылған жиым тізімін басып шығарамыз.

LinkedList

Java Collection Framework жүйесіндегі java.util.LinkedList класы AbstractList сыныбынан мұра алады және List және Deque интерфейстерін жүзеге асырады . Ол тізімнің басында және соңында элементтерді қосу, жою және оларға қол жеткізудің тиімді әдістерін қамтамасыз етеді. Бұл сынып сонымен қатар элементтерді сақтау үшін қосарланған тізімді пайдаланатын Тізім интерфейсінің жүзеге асырылуы болып табылады . Ол еркін позицияларда жылдам кірістіру мен жоюды қамтамасыз етеді, бірақ оның элементтеріне кездейсоқ қол жеткізуді баяулайды. Мұнда Java Collection Framework жүйесінде LinkedList сыныбын пайдаланудың мысалы берілген :
// Создаем 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);
Бұл мысалда біз жолдардың байланыстырылған тізімін жасап, оған үш элемент қостық: «селен», «кипарис» және «драматург». Содан кейін оның ағымдағы күйін көру үшін байланыстырылған тізімді басып шығарамыз. Содан кейін біз тізімнің басына «webdriver.io» элементін қосамыз және жаңартылған байланыстырылған тізімді басып шығарамыз. Соңында біз тізімнен бірінші элементті алып тастаймыз және жойылған элемент тізімде жоқ екенін көру үшін жаңартылған байланыстырылған тізімді қайтадан басып шығарамыз.

HashSet

Java Collection Framework жүйесіндегі java.util.HashSet сыныбы жинақтағы бірегей элементтер жинағын сақтау үшін пайдаланылады. Ол java.util.Set интерфейсінің хэш-кесте негізінде жүзеге асырылуын қамтамасыз етеді. Ол сонымен қатар жылдам кірістіру, жою және іздеуді қамтамасыз етеді, бірақ оның элементтерінің ретін сақтамайды. Төменде Java Collection Framework жүйесінде HashSet сыныбын пайдаланудың мысалы берілген :
// Создаем 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);
Мұнда біз жолдардың хэш жинағын жасадық және оған үш элемент қостық: «раушан», «лorя» және «лотос». Содан кейін біз «раушан» элементін қайтадан қосуға тырысамыз, бірақ хэш жинағы көшірмелерге рұқсат бермейтіндіктен, ол қосылмайды. Осыдан кейін біз оның ағымдағы күйін көру үшін хэш жинағын басып шығарамыз. Содан кейін жиынтықтан «лorя» элементін алып тастаймыз және жойылған элементтің жиынтықта жоқ екенін көру үшін жиынның жаңартылған хэшін басып шығарамыз.

Tree Set

Java Collection Framework жүйесіндегі java.util.TreeSet сыныбы өсу ретімен сұрыпталған жиында бірегей элементтер жинағын сақтау үшін пайдаланылады. Ол қайталанатын элементтерге рұқсат бермей, элементтерді сақтау үшін java.util.Set интерфейсінің ағаш негізінде жүзеге асырылуын қамтамасыз етеді . Класс жылдам кірістіруді, жоюды және іздеуді қамтамасыз етеді және оның элементтерінің ретін олардың табиғи ретіне немесе компараторына сәйкес сақтайды. Мұнда Java Collection Framework жүйесінде TreeSet сыныбын пайдаланудың мысалы берілген :
// Создаем 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);
Бұл мысалда біз жолдардың ағаш жинағын жасаймыз және оған үш элемент қосамыз: «алма», «банан» және «апельсин». Содан кейін біз «алма» элементін қайтадан қосуға тырысамыз, бірақ ағаш жиыны көшірмелерге рұқсат бермейтіндіктен, ол қосылмайды. Осыдан кейін біз оның ағымдағы күйін көру үшін ағаш жиынын басып шығарамыз. Ағаш жинағы өсу ретімен сұрыпталғандықтан, элементтер келесі ретпен басып шығарылады: «алма», «банан» және «апельсин». Содан кейін жиынтықтан «банан» элементін алып тастаймыз және жойылған элементтің жиынтықта жоқ екенін көру үшін жаңартылған ағаш жинағын басып шығарамыз.

HashMap

Java Collection Framework жүйесіндегі java.util.HashMap класы картадағы мәндерге кілттерді салыстыруды сақтау үшін пайдаланылады. Ол java.util.Map интерфейсінің хэш-кесте негізінде жүзеге асырылуын қамтамасыз етеді және элементтерді кілт-мән жұбы ретінде сақтауға мүмкіндік береді. Класс жылдам кірістіру, жою және іздеуді қамтамасыз етеді, бірақ оның элементтерінің ретін сақтамайды. Мұнда Java Collection Framework жүйесінде HashMap сыныбын пайдаланудың мысалы берілген :
// Создаем 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);
Бұл мысалда біз бүтін жолдардың хэш картасын жасаймыз және оған үш элемент қосамыз: «алма» 1 сәйкес келеді, «банан» 2 сәйкес келеді және «апельсин» 3 сәйкес келеді. Содан кейін оны Ағымдағы күйін көру үшін хэш картасын басып шығарамыз. Осыдан кейін біз «банан» кілтінің мәнін аламыз және оны консольге басып шығарамыз. Соңында, хэш картасынан «қызғылт сары» үшін кілт-мән жұбын алып тастаймыз және жойылған элемент бұдан былай онда жоқ екенін көру үшін жаңартылған хэш картасын басып шығарамыз.

Қорытынды

Java Collection Framework – Java бағдарламалау тілінде an objectілер жиынын көрсету және өңдеудің стандартты әдісін қамтамасыз ететін сыныптар мен интерфейстер жиынтығы. Бұл әзірлеушілерге/тестілеушілерге нысандар жинақтарымен дәйекті және тиімді жұмыс істеуге мүмкіндік береді. Фреймворк оларды жинақтағы элементтерді сақтау, оларға қатынасу және басқару әдістерімен қамтамасыз етеді және қолданбаның талаптарына байланысты әртүрлі жинақ іске асырулары арасында оңай ауысуға мүмкіндік береді.
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION