JavaRush /Блоги Java /Random-TG /Мухтасар дар бораи чизи асосӣ - Java Collections Framewor...
Viacheslav
Сатҳи

Мухтасар дар бораи чизи асосӣ - Java Collections Framework

Дар гурӯҳ нашр шудааст

Оғози роҳ

Имрӯз ман мехоҳам дар бораи чунин як мавзӯи ҷолиб, ба монанди " 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 Collections Framework - 2

Коллексия

Аз аввал ба хароҷот сар кунед. Чаро коллексияҳо? Худи истилоҳ аз чизҳое ба мисли "Назарияи намуд" ва "Намудҳои абстрактии маълумот" бармеояд. Аммо агар шумо ба ягон чизи олӣ назар надиҳед, пас вақте ки мо якчанд чиз дорем, мо метавонем онҳоро "маҷмӯи ашё" номида метавонем. Онҳое, ки ашё ҷамъ мекунанд. Умуман, худи калимаи ҷамъ аз лотинӣ омадааст. ҷамъоварӣ, ҷамъоварӣ. Яъне коллексия маҷмӯаи чизест, контейнер барои баъзе унсурҳо. Ҳамин тавр, мо маҷмӯи элементҳо дорем. Мо метавонем бо он чӣ кор кунем:
Мухтасар дар бораи чизи асосӣ - Java Collections Framework - 3
Тавре ки шумо мебинед, мо метавонем чизҳои комилан мантиқӣ дошта бошем. Мо инчунин мефаҳмем, ки мо метавонем бо коллексияҳои сершумор коре кунем:
Мухтасар дар бораи чизи асосӣ - Java Collections Framework - 4
Мувофиқи он, таҳиягарони 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 Collections Framework - 5

Рӯйхатҳо

Ҳамин тариқ, рӯйхатҳо дар иерархияи коллексияҳо ҷои муҳимро ишғол мекунанд:
Мухтасар дар бораи чизи асосӣ - Java Collections Framework - 6
Тавре ки мо мебинем, рӯйхатҳо интерфейси 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-ум дастрасӣ пайдо кунем. Фарқи консепсияи онҳо дар зер оварда шудааст:
Мухтасар дар бораи чизи асосӣ - Java Collections Framework - 7
Дар кор, чунон ки шумо мефаҳмед, фарқият низ вуҷуд дорад. Масалан, илова кардани элементҳо. Элементҳо 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). Он бояд чунин бошад:
Мухтасар дар бораи чизи асосӣ - Java Collections Framework - 8
Таҳлor ин вазифаро дар инҷо пайдо кардан мумкин аст: " Татбиқи навбат бо истифода аз стек - The Queue ADT ("Implement Queue Use with Stacks" дар LeetCode) ". Ҳамин тавр, мо бемалол ба сохтори нави додаҳо - навбат мегузарем.
Мухтасар дар бораи чизи асосӣ - Java Collections Framework - 9

Навбат

Навбат сохторест, ки ба мо аз ҳаёт шинос аст. Навбатхо ба назди магазинхо, назди духтурон. Ҳар кӣ аввал омад (Аввал даромад) аввалин шуда аз навбат мебарояд (Аввал баромад). Дар Java навбат бо интерфейси java.util.Queue муаррифӣ мешавад . Мувофиқи Javadoc навбат, навбат усулҳои зеринро илова мекунад:
Мухтасар дар бораи чизи асосӣ - Java Collections Framework - 10
Тавре ки шумо мебинед, усулҳои фармоиш вуҷуд доранд (иҷро нашудани онҳо истисно аст) ва усулҳои дархост вуҷуд доранд (нотавонӣ барои иҷро кардани онҳо ба хатогиҳо оварда намерасонад). Инчунин мумкин аст, ки элементро бидуни хориҷ кардани он (пек ё элемент) ба даст оред. Интерфейси навбат низ вориси муфид дорад - Deque . Ин ба ном «навбати дутарафа» аст. Яъне, чунин навбат ба шумо имкон медиҳад, ки ин сохторро ҳам аз аввал ва ҳам аз охир истифода баред. Дар ҳуҷҷатҳо гуфта мешавад, ки "Deques инчунин метавонад ҳамчун стекҳои LIFO (Last-In-First-Out) истифода шавад. Ин интерфейс бояд бартарӣ ба синфи кӯҳнаи Stack истифода шавад.", яъне тавсия дода мешавад, ки ба ҷои татбиқи Deque истифода шавад. Стек. Javadoc нишон медиҳад, ки интерфейси Deque кадом усулҳоро тавсиф мекунад:
Мухтасар дар бораи чизи асосӣ - Java Collections Framework - 11
Биёед бубинем, ки чӣ гуна амалияҳо мавҷуданд. Ва мо як далели ҷолибро хоҳем дид - 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. Ин аст тағйироти интерфейс дар муқоиса бо навбатҳои муқаррарӣ:
Мухтасар дар бораи чизи асосӣ - Java Collections Framework - 12
Биёед якчанд мисоли бастани навбатҳоро дида бароем. Аммо онҳо ҷолибанд. Масалан, BlockingQueue аз ҷониби: PriorityBlockingQueue , SynchronousQueue , ArrayBlockingQueue, DelayQueue , LinkedBlockingQueue амалӣ карда мешавад . Аммо BlockingDequeонҳо ҳама чизро аз чаҳорчӯбаҳои Коллексияи стандартӣ амалӣ мекунанд LinkedBlockingDeque. Ҳар як навбат мавзӯи баррасии алоҳида аст. Ва дар доираи ин барраси, мо иерархияи синфро на танҳо бо List, балки инчунин бо Queue:
Мухтасар дар бораи чизи асосӣ - Java Collections Framework - 13
Тавре ки мо аз диаграмма мебинем, интерфейсҳо ва синфҳои Java Collections Framework хеле бо ҳам алоқаманданд. Боз як шохаи иерархияро илова мекунем - Set.
Мухтасар дар бораи чизи асосӣ - Java Collections Framework - 14

Танзим

Set- ҳамчун "маҷмӯа" тарҷума шудааст. Он аз навбат ва рӯйхат Setбо абстраксияи бештари он дар нигоҳдории элементҳо фарқ мекунад. Set- мисли халтаи ашёе, ки дар он чи гуна чойгир будани ашё ва бо кадом тартиб гузоштани онхо маълум нест. Дар Java чунин маҷмӯа бо интерфейси java.util.Set муаррифӣ мешавад . Тавре ки ҳуҷҷатҳо мегӯянд, Setин "маҷмӯаест, ки унсурҳои такрорӣ надорад". Ҷолиб он аст, ки худи интерфейс Setусулҳои навро ба интерфейс илова намекунад Collection, балки танҳо талаботро равшан мекунад (дар бораи он, ки дубликат набояд дошта бошад). Илова бар ин, аз тавсифи қаблӣ бармеояд, ки шумо наметавонед танҳо Setаз он элемент гиред. Итератор барои ба даст овардани элементҳо истифода мешавад. Setбоз якчанд интерфейси бо он алоқаманд дорад. Якум аст SortedSet. Тавре ки аз ном бармеояд, SortedSetин нишон медиҳад, ки чунин маҷмӯа мураттаб карда шудааст ва аз ин рӯ, элементҳо интерфейсро амалӣ мекунанд Comparableё муайян карда мешаванд Comparator. Илова бар ин, SortedSetон якчанд усулҳои ҷолибро пешниҳод мекунад:
Мухтасар дар бораи чизи асосӣ - Java Collections Framework - 15
firstИлова бар ин, усулҳо (элементи хурдтарин аз рӯи арзиш) ва last(элементи калонтарин аз рӯи арзиш) мавҷуданд . SortedSetВорис вуҷуд дорад - NavigableSet. Мақсади ин интерфейс тавсифи усулҳои навигатсия барои дақиқтар муайян кардани унсурҳои мувофиқ мебошад. Чизи ҷолиб он аст, NavigableSetки он ба итератори муқаррарӣ (ки аз хурдтарин ба калонтарин мегузарад) итераторро барои тартиби баръакс илова мекунад - descendingIterator. Илова бар ин, NavigableSetон ба шумо имкон медиҳад, ки усули descendingSetба даст овардани намуди худ (Намоиш), ки дар он унсурҳо дар тартиби баръакс мебошанд, истифода баред. Ин номида мешавад View, зеро тавассути элементи натиҷавӣ шумо метавонед унсурҳои аслии онро иваз кунед Set. Яъне, аслан он ба тарзи дигар муаррифии додаҳои аслӣ аст, на нусхаи он. Ҷолиб он аст, ки NavigableSet, ба монанди Queue, метавонад унсурҳои pollFirst(ҳадди ақал) ва (максимал) идора карда шавад. pollLastЯъне, ин элементро гирифта, аз маҷмӯа хориҷ мекунад. Чӣ гуна амалияҳо вуҷуд доранд? Аввалан, татбиқи машҳуртарин ба codeи hash асос ёфтааст - HashSet . Татбиқи дигари маъруф ба дарахти сурх-сиёҳ асос ёфтааст - TreeSet . Биёед диаграммаи худро пурра кунем:
Мухтасар дар бораи чизи асосӣ - Java Collections Framework - 16
Дар доираи коллексияҳо ҷудо кардани иерархия - гермитҳо боқӣ мемонад. Ки дар назари аввал як тараф меистад - java.util.Map.
Мухтасар дар бораи чизи асосӣ - Java Collections Framework - 17

Харитаҳо

Харитаҳо сохтори додаҳо мебошанд, ки дар он маълумот тавассути калид нигоҳ дошта мешавад. Масалан, калид метавонад 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. Пас, харитаи ниҳоии мо чунин хоҳад буд:
Мухтасар дар бораи чизи асосӣ - Java Collections Framework - 18
Мо метавонем бо далели ҷолибе хотима диҳем, ки коллексия Setдар дохor он истифода мебарад Map, ки дар он арзишҳои иловагӣ калидҳо мебошанд ва арзиш дар ҳама ҷо якхела аст. Ин ҷолиб аст, зеро он Mapмаҷмӯа нест ва бармегардад Set, ки маҷмӯа аст, аммо дар асл ҳамчун амалӣ карда мешавад Map. Каме сюрреалистӣ, аммо ҳамин тавр шуд)
Мухтасар дар бораи чизи асосӣ - Java Collections Framework - 19

Хулоса

Хабари хуш ин аст, ки ин баррасии ин ҷо ба охир мерасад. Хабари бад ин аст, ки ин мақолаи хеле барраси аст. Ҳар як амалисозии ҳар як маҷмӯа сазовори мақолаи алоҳида ва инчунин барои ҳар як алгоритми аз назари мо пинҳон аст. Аммо ҳадафи ин барраси он аст, ки дар хотир дошта бошед, ки онҳо чӣ гунаанд ва робитаҳои байни интерфейсҳо чӣ гунаанд. Умедворам, ки пас аз мутолиаи бодиққат шумо метавонед диаграммаи коллексияҳоро аз хотира кашед. Хуб, чун маъмул, баъзе истинодҳо: #Вячеслав
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION