JavaRush /Блоги Java /Random-TG /Кофе-брейк №185. Дастури мукаммал оид ба чаҳорчӯбаи колле...

Кофе-брейк №185. Дастури мукаммал оид ба чаҳорчӯбаи коллексияи Java

Дар гурӯҳ нашр шудааст
Сарчашма: Миёна Ин дастур ба шумо кӯмак мекунад, ки кори синфҳо ва интерфейсҳои гуногунро, ки дар чаҳорчӯбаи Java Collection дохил карда шудаанд, беҳтар фаҳмед. Кофе-брейк №185.  Дастури мукаммал оид ба чаҳорчӯбаи коллексияи Java - 1Java Collection чаҳорчӯбаест, ки меъмории ягонаро барои нигоҳдорӣ ва идоракунии гурӯҳи an objectҳо таъмин мекунад. Дар асл, он маҷмӯи синфҳо ва интерфейсҳо мебошад, ки роҳи стандартии муаррифӣ ва коркарди коллексияи an objectҳоро дар забони Java таъмин мекунанд. Чаҳорчӯба инчунин дар татбиқи сохторҳои маъмулан истифодашавандаи додаҳо ба монанди Рӯйхат, Маҷмӯа ва Харита кӯмак мекунад. Java Collection Framework якчанд интерфейсҳо ва синфҳоро дар бар мегирад. Ин аст рӯйхати баъзе аз онҳо:

Интерфейсҳо

Интерфейсҳо дар Java Collection Framework рафтор ва амалиётҳои умумиро, ки метавонанд дар коллексияҳо иҷро шаванд, муайян мекунанд. Ин илова кардан ё нест кардани ашё, такрори ашё дар коллексия ва ғайраро дар бар мегирад.
  • Коллексия : Интерфейси решавӣ дар иерархияи коллексия, ки як гурӯҳи an objectҳоро ҳамчун унсурҳо муаррифӣ мекунад.
  • Рӯйхат : Маҷмӯаи фармоишии элементҳо, ки имкон медиҳад такрорӣ.
  • Маҷмӯа : маҷмӯи унсурҳое, ки ба такрор иҷозат намедиҳанд.
  • Харита : маҷмӯи ҷуфтҳои калид-арзиш, ки дар он ҳар як калид беназир аст.
  • Навбат : Навбат сохтори додаҳост, ки барои нигоҳ доштани унсурҳо дар Аввалин Дар Аввал Баромадан (FIFO) истифода мешавад.
Ин рӯйхат ҳама чизро дар бар намегирад, балки танҳо интерфейсҳои бештар истифодашаванда дар Java Collection Framework. Акнун биёед ба ҳар яки онҳо муфассалтар назар андозем.

Коллексия

Коллексия як гурӯҳи an objectҳо мебошад, ки ҳамчун унсурҳои он маълум аст. Ин an objectест, ки метавонад истинодҳоро ба an objectҳои дигар дошта бошад. Интерфейси Коллексия решаи иерархияи коллексия мебошад. Ин интерфейси асосӣ барои ҳама коллексияҳо дар 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 маҷмӯи бетартиби унсурҳои беназир аст , ки ба унсурҳои такрорӣ иҷозат намедиҳад . Интерфейси Set интерфейси Коллексияро васеъ мекунад ва якчанд усулҳоро илова мекунад, ба монанди усулҳои тафтиши мавҷудияти элемент дар маҷмӯи ва усулҳои илова ва хориҷ кардани элементҳо аз маҷмӯи. Ин аст мисоли истифодаи интерфейси Set барои илова ва хориҷ кардани унсурҳо аз маҷмӯи дар Java Collection Framework:
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) истифода мешавад. Ин маънои онро дорад, ки унсури аввалине, ки ба навбат илова карда мешавад, унсури аввалини хориҷшуда хоҳад буд. Ин аст як мисоли истифодаи навбат дар Framework Collection Java:
// 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.util.Map дар Java Collection Framework барои харитаи калидҳо ба арзишҳо истифода мешавад. Он ба шумо имкон медиҳад, ки унсурҳоро ҳамчун ҷуфтҳои калидӣ-арзиш нигоҳ доред ва усулҳои дастрасӣ, тағир додан ва такрори элементҳоро дар харита таъмин мекунад. Дар зер намунаи истифодаи интерфейси 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 : Татбиқи Set , ки ҷадвали ҳашро барои нигоҳдорӣ истифода мебарад.
  • TreeSet : Татбиқи Set , ки дарахтро барои нигоҳдорӣ истифода мебарад.
  • HashMap : Татбиқи Харита , ки ҷадвали хэшро барои нигоҳдорӣ истифода мебарад.
Рӯйхати боло яке аз синфҳои маъмултарин дар Java Collection Framework мебошад. Акнун биёед ба шарҳи муфассали ин синфҳо назар андозем.

ArrayList

Синфи java.util.ArrayList дар коллексияҳои Java барои нигоҳ доштани массиви тағирёбандаи элементҳо дар рӯйхат истифода мешавад. Ин татбиқи васеъ истифодашавандаи интерфейси java.util.List мебошад , ки массивро барои нигоҳ доштани унсурҳо истифода мебарад ва усулҳои муассири дастрасӣ, тағир додан ва такрор кардани элементҳоро дар рӯйхат таъмин мекунад. Синфи java.util.ArrayList дастрасии фаврии тасодуфиро ба унсурҳои он таъмин мекунад, аммо воридкунӣ ва хориҷкунии сустро дар мавқеъҳои тасодуфӣ. Дар зер намунаи истифодаи синфи ArrayList дар Java Collection Framework оварда шудааст:
// Создаем 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-ро аз рӯйхати массив хориҷ мекунем ва рӯйхати массиви навшударо чоп мекунем, то боварӣ ҳосил кунем, ки унсури хориҷшуда дар рӯйхат дигар нест.

Рӯйхати пайвандшуда

Синфи java.util.LinkedList дар Java Collection Framework аз синфи AbstractList мерос мегирад ва интерфейсҳои List ва Deque -ро амалӣ мекунад . Он усулҳои муассир барои илова кардан, нест кардан ва дастрасӣ ба унсурҳоро дар аввал ва охири рӯйхат таъмин мекунад. Ин Синф инчунин татбиқи интерфейси Рӯйхат мебошад , ки барои нигоҳ доштани элементҳо рӯйхати дукарата пайвандро истифода мебарад. Он воридкунӣ ва несткунии зудро дар мавқеъҳои худсарона таъмин мекунад, аммо дастрасии тасодуфиро ба унсурҳои он суст мекунад. Ин аст мисоли чӣ гуна истифода бурдани синфи LinkedList дар Java Collection Framework:
// Создаем 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.util.HashSet дар Java Collection Framework барои нигоҳ доштани маҷмӯи унсурҳои беназир дар маҷмӯа истифода мешавад. Он татбиқи интерфейси java.util.Set -ро дар асоси ҷадвали hash таъмин мекунад. Он инчунин воридкунии зуд, ҳазф ва ҷустуҷӯро таъмин мекунад, аммо тартиби унсурҳои онро нигоҳ медорад. Дар зер намунаи истифодаи синфи HashSet дар Framework Collection Java оварда шудааст:
// Создаем 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я" -ро аз маҷмӯа хориҷ мекунем ва хэши навшудаи маҷмӯаро чоп мекунем, то бубинем, ки унсури хориҷшуда дигар дар маҷмӯа нест.

Tree Set

Синфи java.util.TreeSet дар Java Collection Framework барои нигоҳ доштани маҷмӯаи унсурҳои беназир дар маҷмӯа бо тартиби афзоиш мураттабшуда истифода мешавад. Он татбиқи ба дарахт асосёфтаи интерфейси java.util.Set -ро барои нигоҳ доштани унсурҳо бидуни иҷозати унсурҳои такрорӣ таъмин мекунад. Синф дохилкунӣ, ҳазф ва ҷустуҷӯи зудро таъмин мекунад ва тартиби унсурҳои онро мувофиқи тартиби табиӣ ё муқоисакунанда нигоҳ медорад. Ин аст як мисоли чӣ гуна истифода бурдани синфи TreeSet дар Java Collection Framework:
// Создаем 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.util.HashMap дар Java Collection Framework барои нигоҳ доштани харитасозии калидҳо ба арзишҳо дар харита истифода мешавад. Он татбиқи интерфейси java.util.Map -ро дар асоси ҷадвали хэш таъмин мекунад ва имкон медиҳад, ки унсурҳо ҳамчун ҷуфтҳои калид-арзиш нигоҳ дошта шаванд. Синф воридкунии зуд, несткунӣ ва ҷустуҷӯро таъмин мекунад, аммо тартиби элементҳои онро нигоҳ намедорад. Дар ин ҷо як мисоли истифодаи синфи HashMap дар Framework Collection Java оварда шудааст:
// Создаем 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 маҷмӯи синфҳо ва интерфейсҳоест, ки роҳи стандартии муаррифӣ ва коркарди коллексияҳои an objectҳоро дар забони барномасозии Java таъмин мекунанд. Ин ба таҳиягарон/озмоишгарон имкон медиҳад, ки бо коллексияи an objectҳо ба таври мунтазам ва самаранок кор кунанд. Чаҳорчӯба ба онҳо усулҳои нигоҳдорӣ, дастрасӣ ва идоракунии ҷузъҳои коллексияро фароҳам меорад ва ба онҳо имкон медиҳад, ки вобаста ба талаботи барнома ба осонӣ байни амалисозии коллексияҳои гуногун гузаранд.
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION