Оғози роҳ
Имрӯз ман мехоҳам дар бораи чунин як мавзӯи ҷолиб, ба монанди "
Java Collections Framework " ё ба ибораи содда, дар бораи коллексияҳо сӯҳбат кунам. Аксарияти кори code коркарди маълумот дар ин ё он шакл аст. Рӯйхати корбаронро гиред, рӯйхати суроғаҳоро гиред ва ғайра. Бо кадом роҳ онҳоро ҷудо кунед, ҷустуҷӯ кунед, муқоиса кунед. Аз ин рӯ, дониши коллексияҳо маҳорати асосӣ ҳисобида мешавад. Барои хамин хам мехохам дар ин бора сухан ронам. Илова бар ин, яке аз саволҳои маъмултарин дар мусоҳибаҳои таҳиягарони Java коллексияҳо мебошанд. Масалан, "иерархияи коллексияҳоро кашед." Тартибдиҳандаи онлайн дар роҳи мо ба мо кӯмак мекунад. Масалан, шумо метавонед " Tutorialspoint
Online Java Compiler " ё
Repl.it -ро истифода баред. Роҳи шиносоӣ бо ҳама гуна сохторҳои додаҳо аз тағирёбандаҳои оддӣ (Тағйирёбандаҳо) оғоз меёбад. Дар вебсайти Oracle, мавзӯъҳои гуногун ҳамчун "роҳҳо" ё пайроҳаҳо муаррифӣ мешаванд. Ҳамин тавр, роҳи шиносоӣ бо Java номида мешавад "
Trail: Омӯзиши забони Java: Ҷадвали Мундариҷа ". Ва асосҳои забон (яъне Асосҳои забон) бо тағирёбандаҳо оғоз мешаванд. Аз ин рӯ, биёед як рамзи оддӣ нависед:
public static void main(String[] args) {
String user = "Max";
System.out.println("Hello, " + user);
}
Ин дар ҳама чиз хуб аст, ба истиснои он ки мо мефаҳмем, ки ин code танҳо барои як тағирёбанда хуб ва зебо аст. Чӣ бояд кард, агар шумораи онҳо якчанд бошад? Массивҳо барои нигоҳ доштани маълумоти як намуд ихтироъ карда шуданд. Дар ҳамон Trail аз Oracle як бахши алоҳидае мавҷуд аст, ки ба массивҳо бахшида шудааст. Ин бахш номида мешавад: "
Массивҳо ". Кор бо массивҳо низ хеле содда аст:
import java.util.Arrays;
class Main {
public static void main(String[] args) {
String[] users = new String[2];
users[0] = "Max";
users[1] = "John";
System.out.println("Hello, " + Arrays.toString(users));
}
}
Массивҳо мушкилоти нигоҳ доштани арзишҳои сершуморро дар як ҷо ҳал мекунанд. Аммо он маҳдудият мегузорад: андозаи массив доимӣ аст. Агар, чунон ки дар мисол, мо андозаи = 2 гуфта будем, он ба ду баробар аст. Ҳамааш ҳамин. Агар мо хоҳем, ки массиви калонтар дошта бошем, мо бояд як мисоли нав эҷод кунем. Инчунин, ёфтани элемент барои массив кори душвор аст. Усули вуҷуд дорад
Arrays.binarySearch
, аммо ин ҷустуҷӯ танҳо дар массиви мураттабшуда кор мекунад (барои массиви мураттабнашуда, натиҷа номуайян аст ё танҳо пешгӯинашаванда аст). Яъне, ҷустуҷӯ моро водор мекунад, ки ҳар дафъа ба навъҳо ҷудо кунем. Нобудкунӣ инчунин танҳо арзишро тоза мекунад. Аз ин рӯ, мо то ҳол намедонем, ки дар массив чӣ қадар маълумот мавҷуд аст, мо танҳо медонем, ки дар массив чанд ҳуҷайра мавҷуд аст. Барои нав кардани дониши шумо дар бораи массивҳо:
Ва дар натиҷаи рушди забони Java, чаҳорчӯбаи Java Collections дар JDK 1.2 пайдо шуд, ки мо имрӯз дар бораи он сӯҳбат хоҳем кард.
Коллексия
Аз аввал ба хароҷот сар кунед. Чаро коллексияҳо? Худи истилоҳ аз чизҳое ба мисли "Назарияи намуд" ва "Намудҳои абстрактии маълумот" бармеояд. Аммо агар шумо ба ягон чизи олӣ назар надиҳед, пас вақте ки мо якчанд чиз дорем, мо метавонем онҳоро "маҷмӯи ашё" номида метавонем. Онҳое, ки ашё ҷамъ мекунанд. Умуман, худи калимаи ҷамъ аз лотинӣ омадааст. ҷамъоварӣ, ҷамъоварӣ. Яъне коллексия маҷмӯаи чизест, контейнер барои баъзе унсурҳо. Ҳамин тавр, мо маҷмӯи элементҳо дорем. Мо метавонем бо он чӣ кор кунем:
Тавре ки шумо мебинед, мо метавонем чизҳои комилан мантиқӣ дошта бошем. Мо инчунин мефаҳмем, ки мо метавонем бо коллексияҳои сершумор коре кунем:
Мувофиқи он, таҳиягарони Java интерфейси java.util.Collection- ро барои тавсифи ин рафтори умумӣ барои ҳама коллексияҳо навиштанд . Интерфейси Коллексия дар он ҷоест, ки ҳама коллексияҳо сарчашма мегиранд. Коллексия як идея аст, он идеяест, ки чӣ гуна ҳама коллексияҳо бояд рафтор кунанд. Аз ин рӯ, истилоҳи "Коллектив" ҳамчун интерфейс ифода ёфтааст. Табиист, ки интерфейс ба татбиқ ниёз дорад. Интерфейс
java.util.Collection
дорои синфи абстрактӣ
AbstractCollection
, яъне баъзе "маҷмӯаи абстрактӣ", ки скелетро барои татбиқи дигар ифода мекунад (чунон ки дар JavaDoc дар болои синф навишта шудааст
java.util.AbstractCollection
). Дар бораи коллексияҳо сухан ронда, биёед баргардем ва дар хотир дорем, ки мо мехоҳем онҳоро такрор кунем. Ин маънои онро дорад, ки мо мехоҳем элементҳоро як ба як такрор кунем. Ин консепсияи хеле муҳим аст. Аз ин рӯ, интерфейс
Collection
аз
Iterable
. Ин хеле муҳим аст, зеро ... аввалан, ҳама чизи Iterable бояд қодир бошад, ки Итераторро дар асоси мундариҷааш баргардонад. Ва дуюм, ҳама чизеро, ки Iterable дар ҳалқаҳо истифода бурдан мумкин аст
for-each-loop
. Ва маҳз бо ёрии итератор
AbstractCollection
усулҳо ба мисли
contains
,
toArray
, амалӣ мешаванд
remove
. Ва роҳи фаҳмидани коллексияҳо аз яке аз сохторҳои маъмултарини додаҳо оғоз меёбад - рӯйхат, яъне.
List
.
Рӯйхатҳо
Ҳамин тариқ, рӯйхатҳо дар иерархияи коллексияҳо ҷои муҳимро ишғол мекунанд:
Тавре ки мо мебинем, рӯйхатҳо интерфейси
java.util.List -ро амалӣ мекунанд . Рӯйхатҳо ифода мекунанд, ки мо маҷмӯи унсурҳоро дорем, ки бо як пайдарпай паси дигаре ҷойгир шудаанд. Ҳар як элемент индекс дорад (ба мисли массив). Одатан, рӯйхат ба шумо имкон медиҳад, ки унсурҳои дорои арзиши якхела дошта бошед. Тавре ки мо дар боло гуфтем,
List
он дар бораи индекси элемент медонад. Ин ба шумо имкон медиҳад, ки (
get
) унсурро аз рӯи индекс ба даст оред ё барои индекси мушаххас (
set
) арзиш таъин кунед. Усулҳои ҷамъоварӣ
add
,
addAll
,
remove
ба шумо имкон медиҳанд, ки индексеро, ки аз он иҷро карда мешаванд, муайян кунед. Илова бар ин, y
List
дорои versionи шахсии итератор бо номи
ListIterator
. Ин итератор дар бораи индекси элемент медонад, бинобар ин он метавонад на танҳо ба пеш, балки ба ақиб ҳам такрор кунад. Онро ҳатто аз ҷои мушаххаси коллексия сохтан мумкин аст. Дар байни ҳамаи татбиқҳо, ду маъмултарин истифода мешаванд:
ArrayList
ва
LinkedList
. Аввалан,
ArrayList
он рӯйхат аст (
List
) дар асоси массив (
Array
). Ин ба шумо имкон медиҳад, ки "дастрасии тасодуфӣ"
ба унсурҳо ноил шавед. Дастрасии тасодуфӣ ин қобorяти фаврӣ дарёфт кардани унсур аз рӯи индекс аст, ба ҷои такрор кардани ҳамаи элементҳо то он даме, ки мо элементро бо индекси дилхоҳ пайдо кунем. Маҳз массив ҳамчун асосест, ки ба ин ноил шудан имкон медиҳад. Баръакс,
LinkedList
он Рӯйхати алоқаманд аст. Ҳар як вуруд дар рӯйхати пайвастшуда дар шакл муаррифӣ карда мешавад
Entry
, ки худи маълумотро нигоҳ медорад ва инчунин истиноди оянда (оянда) ва қаблӣ (пешта)
Entry
. Ҳамин тариқ,
LinkedList
"Дастрасии пайдарпай
" амалӣ карда мешавад . Маълум аст, ки барои ёфтани элементи 5-ум мо бояд аз элементи якум ба охирин гузарем, зеро мо ба унсури панчум дастрасии бевосита надорем. Мо метавонем ба он танҳо аз унсури 4-ум дастрасӣ пайдо кунем. Фарқи консепсияи онҳо дар зер оварда шудааст:
Дар кор, чунон ки шумо мефаҳмед, фарқият низ вуҷуд дорад. Масалан, илова кардани элементҳо. Элементҳо
LinkedList
ба мисли ҳалқаҳои занҷир пайвастанд. Аммо
ArrayList
он элементҳоро дар массив нигоҳ медорад. Ва массив, чунон ки мо медонем, андозаи худро тағир дода наметавонад. Пас он чӣ гуна кор мекунад
ArrayList
? Ва он хеле содда кор мекунад. Вақте ки фосила дар массив тамом мешавад, он 1,5 маротиба зиёд мешавад. Ин аст рамзи масштаб:
int newCapacity = oldCapacity + (oldCapacity >> 1);
Фарқияти дигар дар амалиёт ҳама гуна ҷуброни элементҳост. Масалан, ҳангоми илова кардан ё хориҷ кардани элементҳо ба миёна. Барои нест кардан аз
LinkedList
элемент, танҳо истинодҳоро ба ин элемент хориҷ кунед. Дар сурати ,
ArrayList
мо маҷбур мешавем, ки ҳар дафъа бо истифода аз
System.arraycopy
. Ҳамин тариқ, чӣ қадаре ки элементҳо зиёд бошанд, ҳамон қадар амалҳо бояд иҷро шаванд. Тавсифи муфассалро дар ин мақолаҳо пайдо кардан мумкин аст:
Пас аз баррасии ArrayList, кас наметавонад "пешгузаштаи он", синфи
java.util.Vector -ро ба ёд оред . Он
Vector
бо
ArrayList
он фарқ мекунад, ки усулҳои кор бо коллексия (илова кардан, нест кардан ва ғ.) ҳамоҳанг карда мешаванд. Яъне, агар як ришта (
Thread
) элементҳоро илова кунад, он гоҳ риштаҳои дигар то анҷоми кори риштаи аввал интизор мешаванд. Азбаски бехатарии ришта аксар вақт талаб карда намешавад, тавсия дода мешавад, ки синфро дар чунин ҳолатҳо истифода баред
ArrayList
, тавре ки дар JavaDoc барои синф ба таври возеҳ гуфта шудааст
Vector
. Гайр аз ин,
Vector
вай андозаи худро на 1,5 баробар,
ArrayList
балки 2 баробар зиёд мекунад. Дар акси ҳол, рафтор якхела аст -
Vector
нигоҳдории элементҳо дар шакли массив пинҳон аст ва илова кардан/хориҷ кардани элементҳо ҳамон оқибатҳое дорад, ки дар
ArrayList
. Дарвоқеъ,
Vector
мо инро бо сабабе ба ёд овардем.
Агар мо ба Javadoc назар кунем, мо дар "Зерсинфҳои мустақими маълум" сохтореро ба монанди java.util.Stack мебинем . Стек сохтори ҷолибест, ки
last-in-first-out
сохтори LIFO (охирин дар аввал аст) мебошад. Стек, ки аз забони англисӣ тарҷума шудааст, стек аст (масалан, стеки китобҳо). Стек усулҳои иловагиро амалӣ мекунад:
peek
(назар, назар),
pop
(тела),
push
(тела). Ин усул
peek
ҳамчун назар тарҷума карда мешавад (масалан,
peek дар дохor халта ҳамчун " назар ба даруни халта " тарҷума мешавад ва
ба воситаи сӯрохи калид ҳамчун " назар аз сӯрохи калид " тарҷума мешавад ). Ин усул ба шумо имкон медиҳад, ки ба "боло" -и стек нигоҳ кунед, яъне. элементи охиринро бе хориҷ кардан (яъне бидуни хориҷ кардан) аз стек гиред. Усул
push
як элементи навро ба стек тела медиҳад (илова мекунад) ва онро бармегардонад ва усули элемент
pop
элементи хориҷшударо тела медиҳад (нест мекунад) ва бармегардонад. Дар ҳар се ҳолат (яъне peek, pop ва push), мо танҳо бо унсури охирин кор мекунем (яъне "болои стек"). Ин хусусияти асосии сохтори стек аст. Дар омади гап, як вазифаи ҷолиб барои фаҳмидани стекҳо вуҷуд дорад, ки дар китоби "Cracking Coding Interview" тавсиф шудааст. сохтор (FIFO). Он бояд чунин бошад:
Таҳлor ин вазифаро дар инҷо пайдо кардан мумкин аст: "
Татбиқи навбат бо истифода аз стек - The Queue ADT ("Implement Queue Use with Stacks" дар LeetCode) ". Ҳамин тавр, мо бемалол ба сохтори нави додаҳо - навбат мегузарем.
Навбат
Навбат сохторест, ки ба мо аз ҳаёт шинос аст. Навбатхо ба назди магазинхо, назди духтурон. Ҳар кӣ аввал омад (Аввал даромад) аввалин шуда аз навбат мебарояд (Аввал баромад). Дар Java навбат бо интерфейси
java.util.Queue муаррифӣ мешавад . Мувофиқи Javadoc навбат, навбат усулҳои зеринро илова мекунад:
Тавре ки шумо мебинед, усулҳои фармоиш вуҷуд доранд (иҷро нашудани онҳо истисно аст) ва усулҳои дархост вуҷуд доранд (нотавонӣ барои иҷро кардани онҳо ба хатогиҳо оварда намерасонад). Инчунин мумкин аст, ки элементро бидуни хориҷ кардани он (пек ё элемент) ба даст оред. Интерфейси навбат низ вориси муфид дорад -
Deque . Ин ба ном «навбати дутарафа» аст. Яъне, чунин навбат ба шумо имкон медиҳад, ки ин сохторро ҳам аз аввал ва ҳам аз охир истифода баред. Дар ҳуҷҷатҳо гуфта мешавад, ки "Deques инчунин метавонад ҳамчун стекҳои LIFO (Last-In-First-Out) истифода шавад. Ин интерфейс бояд бартарӣ ба синфи кӯҳнаи Stack истифода шавад.", яъне тавсия дода мешавад, ки ба ҷои татбиқи Deque истифода шавад. Стек. Javadoc нишон медиҳад, ки интерфейси Deque кадом усулҳоро тавсиф мекунад:
Биёед бубинем, ки чӣ гуна амалияҳо мавҷуданд. Ва мо як далели ҷолибро хоҳем дид - LinkedList ба лагери навбат ворид шуд) Яъне, LinkedList ҳам
List
, ва ҳам
Deque
. Аммо "танҳо навбатҳо" низ ҳастанд, масалан
PriorityQueue
. Вайро зуд-зуд ба хотир намеоваранд, вале бехуда. Аввалан, шумо наметавонед "an objectҳои муқоисанашаванда" -ро дар ин навбат истифода баред, яъне. ё Муқоисакунанда бояд муайян карда шавад ё ҳама an objectҳо бояд муқоисашаванда бошанд. Сониян, "ин амалия вақти O(log(n))-ро барои усулҳои бандкунӣ ва ҷудокунӣ таъмин мекунад". Мушкorи логарифмикӣ бо як сабаб вуҷуд дорад. PriorityQueue дар асоси теппа амалӣ карда шуд. Javadoc мегӯяд: "Навбати афзалиятнок ҳамчун теппаи мутавозуни дуӣ муаррифӣ мешавад." Худи анбор барои ин як массиви муқаррарӣ аст. Ки дар мавриди зарурат мерӯяд. Вақте ки теппа хурд аст, он 2 маротиба меафзояд. Ва он гоҳ то 50%. Шарҳ аз рамз: "Андозаи дучандон, агар хурд бошад; дар акси ҳол, 50% афзоиш меёбад". Навбати афзалиятнок ва Heap Binary як мавзӯи алоҳида мебошанд. Пас, барои маълумоти бештар:
Ҳамчун татбиқ,
java.util.Deque
шумо метавонед синфи
java.util.ArrayDeque -ро истифода баред . Яъне рӯйхатҳоро метавон бо истифода аз рӯйхати алоқаманд ва массив амалӣ кард ва навбатҳоро низ бо истифода аз массив ё бо истифода аз рӯйхати алоқаманд амалӣ кардан мумкин аст. Интерфейсҳои
Queue
ва
Deque
дорои наслҳое мебошанд, ки "навбати басташавӣ"-ро намояндагӣ мекунанд:
BlockingQueue
ва
BlockingDeque
. Ин аст тағйироти интерфейс дар муқоиса бо навбатҳои муқаррарӣ:
Биёед якчанд мисоли бастани навбатҳоро дида бароем. Аммо онҳо ҷолибанд. Масалан, BlockingQueue аз ҷониби:
PriorityBlockingQueue ,
SynchronousQueue , ArrayBlockingQueue,
DelayQueue ,
LinkedBlockingQueue амалӣ карда мешавад . Аммо
BlockingDeque
онҳо ҳама чизро аз чаҳорчӯбаҳои Коллексияи стандартӣ амалӣ мекунанд
LinkedBlockingDeque
. Ҳар як навбат мавзӯи баррасии алоҳида аст. Ва дар доираи ин барраси, мо иерархияи синфро на танҳо бо
List
, балки инчунин бо
Queue
:
Тавре ки мо аз диаграмма мебинем, интерфейсҳо ва синфҳои Java Collections Framework хеле бо ҳам алоқаманданд. Боз як шохаи иерархияро илова мекунем -
Set
.
Танзим
Set
- ҳамчун "маҷмӯа" тарҷума шудааст. Он аз навбат ва рӯйхат
Set
бо абстраксияи бештари он дар нигоҳдории элементҳо фарқ мекунад.
Set
- мисли халтаи ашёе, ки дар он чи гуна чойгир будани ашё ва бо кадом тартиб гузоштани онхо маълум нест. Дар Java чунин маҷмӯа бо интерфейси
java.util.Set муаррифӣ мешавад . Тавре ки ҳуҷҷатҳо мегӯянд,
Set
ин "маҷмӯаест, ки унсурҳои такрорӣ надорад". Ҷолиб он аст, ки худи интерфейс
Set
усулҳои навро ба интерфейс илова намекунад
Collection
, балки танҳо талаботро равшан мекунад (дар бораи он, ки дубликат набояд дошта бошад). Илова бар ин, аз тавсифи қаблӣ бармеояд, ки шумо наметавонед танҳо
Set
аз он элемент гиред. Итератор барои ба даст овардани элементҳо истифода мешавад.
Set
боз якчанд интерфейси бо он алоқаманд дорад. Якум аст
SortedSet
. Тавре ки аз ном бармеояд,
SortedSet
ин нишон медиҳад, ки чунин маҷмӯа мураттаб карда шудааст ва аз ин рӯ, элементҳо интерфейсро амалӣ мекунанд
Comparable
ё муайян карда мешаванд
Comparator
. Илова бар ин,
SortedSet
он якчанд усулҳои ҷолибро пешниҳод мекунад:
first
Илова бар ин, усулҳо (элементи хурдтарин аз рӯи арзиш) ва
last
(элементи калонтарин аз рӯи арзиш) мавҷуданд .
SortedSet
Ворис вуҷуд дорад -
NavigableSet
. Мақсади ин интерфейс тавсифи усулҳои навигатсия барои дақиқтар муайян кардани унсурҳои мувофиқ мебошад. Чизи ҷолиб он аст,
NavigableSet
ки он ба итератори муқаррарӣ (ки аз хурдтарин ба калонтарин мегузарад) итераторро барои тартиби баръакс илова мекунад -
descendingIterator
. Илова бар ин,
NavigableSet
он ба шумо имкон медиҳад, ки усули
descendingSet
ба даст овардани намуди худ (Намоиш), ки дар он унсурҳо дар тартиби баръакс мебошанд, истифода баред. Ин номида мешавад
View
, зеро тавассути элементи натиҷавӣ шумо метавонед унсурҳои аслии онро иваз кунед
Set
. Яъне, аслан он ба тарзи дигар муаррифии додаҳои аслӣ аст, на нусхаи он. Ҷолиб он аст, ки
NavigableSet
, ба монанди
Queue
, метавонад унсурҳои
pollFirst
(ҳадди ақал) ва (максимал) идора карда шавад.
pollLast
Яъне, ин элементро гирифта, аз маҷмӯа хориҷ мекунад. Чӣ гуна амалияҳо вуҷуд доранд? Аввалан, татбиқи машҳуртарин ба codeи hash асос ёфтааст -
HashSet . Татбиқи дигари маъруф ба дарахти сурх-сиёҳ асос ёфтааст -
TreeSet . Биёед диаграммаи худро пурра кунем:
Дар доираи коллексияҳо ҷудо кардани иерархия - гермитҳо боқӣ мемонад. Ки дар назари аввал як тараф меистад -
java.util.Map
.
Харитаҳо
Харитаҳо сохтори додаҳо мебошанд, ки дар он маълумот тавассути калид нигоҳ дошта мешавад. Масалан, калид метавонад ID ё рамзи шаҳр бошад. Ва маҳз тавассути ин калид маълумот ҷустуҷӯ карда мешавад. Ҷолиб он аст, ки кортҳои алоҳида намоиш дода мешаванд. Мувофиқи таҳиягарон (нигаред ба "
Java Collections API Design FAQ "), харитасозии калид-арзиш маҷмӯа нест. Ва харитаҳоро зудтар метавон ҳамчун маҷмӯи калидҳо, маҷмӯи арзишҳо, маҷмӯи ҷуфтҳои калид-арзиш баррасӣ кард. Ин ҳайвони ҷолиб аст. Кортҳо кадом усулҳоро пешниҳод мекунанд? Биёед ба интерфейси Java API
java.util.Map назар кунем . Зеро Азбаски харитаҳо коллексия нестанд (онҳо аз Коллексияҳо мерос намегиранд), онҳо дорои
contains
. Ва ин мантиқист. Харита аз калидҳо ва арзишҳо иборат аст. Кадоме аз ин усул бояд тафтиш карда шавад
contains
ва чӣ тавр ба иштибоҳ наафтед? Аз ин рӯ, интерфейс
Map
ду versionи гуногун дорад:
containsKey
(калид дорад) ва
containsValue
(кимат дорад). Истифодаи он
keySet
ба шумо имкон медиҳад, ки маҷмӯи калидҳоро гиред (ҳамон
Set
). Ва бо истифода аз усул
values
мо метавонем маҷмӯи арзишҳоро дар харита ба даст орем. Калидҳо дар харита беназиранд, ки онро сохтори додаҳо таъкид мекунад
Set
. Арзишҳоро метавон такрор кард, ки онро сохтори маълумотҳои Коллексия таъкид мекунад. Илова бар ин, бо истифода аз усул
entrySet
мо метавонем маҷмӯи ҷуфтҳои калид-арзишро ба даст орем. Шумо метавонед бештар дар бораи он, ки чӣ гуна татбиқи кортҳо мавҷуданд, дар таҳлилҳои муфассалтар хонед:
Ман инчунин мехоҳам бубинам, ки чӣ
HashMap
хеле монанд ба
HashSet
ва
TreeMap
ба
TreeSet
. Онҳо ҳатто интерфейсҳои шабеҳ доранд:
NavigableSet
ва
NavigableMap
,
SortedSet
ва
SortedMap
. Пас, харитаи ниҳоии мо чунин хоҳад буд:
Мо метавонем бо далели ҷолибе хотима диҳем, ки коллексия
Set
дар дохor он истифода мебарад
Map
, ки дар он арзишҳои иловагӣ калидҳо мебошанд ва арзиш дар ҳама ҷо якхела аст. Ин ҷолиб аст, зеро он
Map
маҷмӯа нест ва бармегардад
Set
, ки маҷмӯа аст, аммо дар асл ҳамчун амалӣ карда мешавад
Map
. Каме сюрреалистӣ, аммо ҳамин тавр шуд)
Хулоса
Хабари хуш ин аст, ки ин баррасии ин ҷо ба охир мерасад. Хабари бад ин аст, ки ин мақолаи хеле барраси аст. Ҳар як амалисозии ҳар як маҷмӯа сазовори мақолаи алоҳида ва инчунин барои ҳар як алгоритми аз назари мо пинҳон аст. Аммо ҳадафи ин барраси он аст, ки дар хотир дошта бошед, ки онҳо чӣ гунаанд ва робитаҳои байни интерфейсҳо чӣ гунаанд. Умедворам, ки пас аз мутолиаи бодиққат шумо метавонед диаграммаи коллексияҳоро аз хотира кашед.
Хуб, чун маъмул, баъзе истинодҳо:
#Вячеслав
GO TO FULL VERSION