Π’ экосистСмС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ программисты часто ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ хранСния Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ структуры, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ массивы ΠΈΠ»ΠΈ списки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π·Π½Π°ΠΊΠΎΠΌΡ‹ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ сущСствуСт ΠΌΠ΅Π½Π΅Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ, Π½ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€” ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… прСдставляСт собой Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, нСсмотря Π½Π° внСшнСС сходство с массивом, ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΌΠΈ особСнностями, Π΄Π΅Π»Π°ΡŽΡ‰ΠΈΠΌΠΈ Π΅Π³ΠΎ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΌ Π² спСцифичСских сцСнариях программирования.

Основная ΡΡƒΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΅Π³ΠΎ способности Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ для элСмСнтов Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π±Π΅Π· ТСсткой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ структуры, Π½ΠΎ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ строгой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, коллСкция Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ сСриализации Π΄Π°Π½Π½Ρ‹Ρ…. ПониманиС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ коллСкция Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΊΠΎΠ³Π΄Π° Π΅Ρ‘ слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ вмСсто ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Ρ… Π°Π½Π°Π»ΠΎΠ³ΠΎΠ², позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄.

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, рассмотрим синтаксис Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ кСйсы использования. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ эффСктивно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ элСмСнтами, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступны для манипуляции Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡Π°Ρ… этот инструмСнт оказываСтся быстрСС ΠΈ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ стандартных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ 1Π‘.

АрхитСктура ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ отличия

На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Массив. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ±Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ количСство элСмСнтов, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ индСксу. Однако Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ кроСтся Π² ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ этих Ρ‚ΠΈΠΏΠΎΠ². Массив Π² 1Π‘ β€” это Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, встроСнный Π² ядро языка, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ коллСкция Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ уровня, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ интСрфСйсы доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ.

Главная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ коллСкция Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² контСкстС ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ подсистСмами ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром. Она ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ прСдсказуСмым ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈ сСриализации. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈ транзакционности Π² Ρ‚Π΅Ρ… контСкстах, Π³Π΄Π΅ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ, хотя Π² Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡Π°Ρ… это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π΅Π΄ΠΊΠΎ.

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ систСмы Ρ‚ΠΈΠΏΠΎΠ² Π² строгом смыслС, ΠΊΠ°ΠΊ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈΠ»ΠΈ БоотвСтствиС. Π­Ρ‚ΠΎ динамичСский список, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ нСобходимости ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ТСстко Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ конструктора, Π½ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ остаСтся Π³ΠΈΠ±ΠΊΠΈΠΌ. Вакая Π΄Π²ΠΎΠΉΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Ρ‘ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом Π² Ρ€ΡƒΠΊΠ°Ρ… ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½Π° ΡΡ‚Ρ€ΠΎΠ³ΠΎΡΡ‚ΡŒ, Π° ΠΊΠΎΠ³Π΄Π° β€” ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: НС слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для хранСния Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти Π½Π° Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сСссиях Π±Π΅Π· нСобходимости. Π₯отя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ эффСктивСн, Π΅Π³ΠΎ overhead (Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы) Π²Ρ‹ΡˆΠ΅, Ρ‡Π΅ΠΌ Ρƒ простого Массива, ΠΈΠ·-Π·Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ.

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΡƒΡŽ ΠΈΠΌΠ΅Π½Π½ΠΎ этот Ρ‚ΠΈΠΏ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ систСмными функциями ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экзСмпляра ΠΈ базовая инициализация

ΠŸΡ€ΠΎΡ†Π΅ΡΡ создания Π½ΠΎΠ²ΠΎΠ³ΠΎ экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° стандартСн для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ ΠΈ выполняСтся Ρ‡Π΅Ρ€Π΅Π· конструктор Новый. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡƒΡΡ‚ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ сразу ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, хотя Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ пустой конструктор для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ наполнСния. Бинтаксис ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ прост ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ конструкция:

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ = Новый ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ;

ПослС выполнСния этой строки Π² памяти выдСляСтся ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊ ΠΏΡ€ΠΈΠ΅ΠΌΡƒ Π΄Π°Π½Π½Ρ‹Ρ…. На этом этапС коллСкция пуста, свойство ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ пСрСмСнная, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ записан ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ…Ρ€Π°Π½ΠΈΡ‚ ссылку Π½Π° Π½Π΅Π³ΠΎ, Π° Π½Π΅ саму структуру Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ ссылку, ΠΈ Π»ΡŽΠ±Ρ‹Π΅ измСнСния Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ отразятся Π½Π° исходном ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅.

БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, хотя Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это примСняСтся Ρ€Π΅ΠΆΠ΅. Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, это ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ, добавляя ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ строки, числа ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Ρ‡Ρ‚ΠΎ обСспСчиваСт Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ.

  • πŸ”Ή ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Новый создаСт ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΊΡƒΡ‡Π΅ памяти.
  • πŸ”Ή ΠŸΡƒΡΡ‚Π°Ρ коллСкция Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ объСм рСсурсов Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° добавлСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта.
  • πŸ”Ή ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ автоматичСскоС ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ элСмСнтов.
πŸ“Š Какой Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго для Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… списков?
Массив
БписокЗначСний
ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ добавлСния ΠΈ управлСния элСмСнтами

Основная Ρ€Π°Π±ΠΎΡ‚Π° с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ сводится ΠΊ манипуляции Π΅Π³ΠΎ содСрТимым. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ для наполнСния ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ являСтся Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ. Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ любого Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ помСщаСтся Π² ΠΊΠΎΠ½Π΅Ρ† списка. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° являСтся индСкс Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ элСмСнта, Ρ‡Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ обращСния ΠΊ Π½Π΅ΠΌΡƒ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ добавлСния Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…:

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ = Новый ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ;

ИндСкс1 = ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅");

ИндСкс2 = ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(100500);

ИндСкс3 = ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(ВСкущаяДата());

Помимо добавлСния Π² ΠΊΠΎΠ½Π΅Ρ†, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ элСмСнт Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, сдвинув ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Π²ΠΏΡ€Π°Π²ΠΎ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Π°ΠΆΠ΅Π½ порядок слСдования Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ Π·Π°Π΄Π°Ρ‡ с ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ. Π’Π°ΠΊΠΆΠ΅ доступСн ΠΌΠ΅Ρ‚ΠΎΠ΄ Π£Π΄Π°Π»ΠΈΡ‚ΡŒ для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ элСмСнта ΠΏΠΎ индСксу.

Для Π·Π°ΠΌΠ΅Π½Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ значСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ свойство доступа ΠΏΠΎ индСксу, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ массивам. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ извСстному Π½ΠΎΠΌΠ΅Ρ€Ρƒ:

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ[0] = "НовоС ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅";

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ обСспСчиваСт Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ β€” ΠΎΠ½Π° являСтся константной O(1), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ underlying структура ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ°ΡΡΠΈΠ²Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Однако ΠΏΡ€ΠΈ частом ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ вставкС элСмСнтов Π² Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΠΈΠΆΠ°Ρ‚ΡŒΡΡ ΠΈΠ·-Π·Π° нСобходимости сдвига всСх ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ячССк памяти.

πŸ’‘

ΠœΠ΅Ρ‚ΠΎΠ΄ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСкс Π½ΠΎΠ²ΠΎΠ³ΠΎ элСмСнта, Ρ‡Ρ‚ΠΎ позволяСт сразу Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌ Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ поиска ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΡ ΠΈ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… β€” ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ логичСский этап Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’ 1Π‘ сущСствуСт нСсколько способов ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΈ Π²Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° зависит ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ. Π‘Π°ΠΌΡ‹ΠΉ распространСнный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” использованиС Ρ†ΠΈΠΊΠ»Π° Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски создаСт ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ всСм элСмСнтам.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ классичСского ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°:

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Π­Ρ‚ΠΎΡ‚ синтаксис Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΈ бСзопасСн. Однако, Ссли Π²Π°ΠΌ трСбуСтся доступ ΠΊ индСксам элСмСнтов ΠΈΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ структуру ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π² процСссС ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнты), ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Для с счСтчиком ΠΎΡ‚ 0 Π΄ΠΎ ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1.

ΠŸΡ€ΠΈ использовании Ρ†ΠΈΠΊΠ»Π° с индСксом слСдуСт Π±Ρ‹Ρ‚ΡŒ остороТным ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ элСмСнтов. Если Π²Ρ‹ удаляСтС элСмСнт, всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ, ΠΈ индСксация Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях рСкомСндуСтся ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС β€” ΠΎΡ‚ послСднСго элСмСнта ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ. Π­Ρ‚ΠΎ позволяСт бСзопасно ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π±Π΅Π· пропуска элСмСнтов ΠΈΠ»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°.

  • πŸ”Έ Π¦ΠΈΠΊΠ» Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π°Π»Π΅Π½ для простого чтСния Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ структуры.
  • πŸ”Έ Π¦ΠΈΠΊΠ» Для Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, Ссли Π²Π°ΠΆΠ΅Π½ индСкс элСмСнта ΠΈΠ»ΠΈ планируСтся ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅.
  • πŸ”Έ ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅ всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ порядок ΠΎΠ±Ρ…ΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок индСксации.

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π°: ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ vs Массив vs БписокЗначСний

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ мСсто ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² арсСналС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° 1Π‘, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ провСсти прямоС сравнСниС с блиТайшими ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π°ΠΌΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ свою Π½ΠΈΡˆΡƒ, ΠΈ Π²Ρ‹Π±ΠΎΡ€ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ инструмСнта ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡƒΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ сниТСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ различия ΠΏΠΎ основным ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ использования:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Массив БписокЗначСний
Π’ΠΈΠΏ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠžΠ±ΡŠΠ΅ΠΊΡ‚
Випизация элСмСнтов ДинамичСская (любой Ρ‚ΠΈΠΏ) ДинамичСская (любой Ρ‚ΠΈΠΏ) Бтрогая (ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ любой)
БСриализация (XDTO/XML) ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ прСобразования Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ прСобразования
ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ доступа Высокая Максимальная БрСдняя (ΠΈΠ·-Π·Π° Π΄ΠΎΠΏ. свойств)
ОсновноС Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ…, API Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ вычислСния Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹, ΠΎΡ‚Π±ΠΎΡ€Ρ‹

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Массив Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π² чистой скорости вычислСний Π²Π½ΡƒΡ‚Ρ€ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль. БписокЗначСний Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с интСрфСйсами (поля Π²Π²ΠΎΠ΄Π°, списки), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ свойства "ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅", "ΠŸΠΎΠΌΠ΅Ρ‚ΠΊΠ°" ΠΈ "ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°". Однако ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π½ΠΈΡˆΡƒ Π² Π·Π°Π΄Π°Ρ‡Π°Ρ… ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ сСриализации, Π³Π΄Π΅ трСбуСтся строгоС соотвСтствиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±Π΅Π· Π»ΠΈΡˆΠ½ΠΈΡ… свойств интСрфСйса.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· HTTP-сСрвисы ΠΈΠ»ΠΈ Π²Π΅Π±-сСрвисы ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ цСлСвая систСма ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ дСсСриализуСт Ρ‚ΠΈΠΏ "ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ". Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ явноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ XDTO.

Вонкости сСриализации

ΠŸΡ€ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π² XDTO ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ прСобразуСтся Π² массив, Π½ΠΎ сохраняСт порядок элСмСнтов. Если порядок ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½, это ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ сцСнарии примСнСния Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅

Π“Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот инструмСнт? Одним ΠΈΠ· самых частых сцСнариСв являСтся ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² для слоТных запросов ΠΈΠ»ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ², Π³Π΄Π΅ трСбуСтся ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ. НапримСр, ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΏΠΎ динамичСскому Π½Π°Π±ΠΎΡ€Ρƒ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, количСство ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… мСняСтся Π² runtime.

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°ΠΆΠ½Ρ‹ΠΉ кСйс β€” Ρ€Π°Π±ΠΎΡ‚Π° с внСшними систСмами Ρ‡Π΅Ρ€Π΅Π· COM-соСдинСниС ΠΈΠ»ΠΈ Π²Ρ‹Π·ΠΎΠ² Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ. НСкоторыС внСшниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Collection. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях использованиС Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ 1Π‘ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ сниТаСт риск возникновСния ошибок совмСстимости.

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ Π·Π°Π΄Π°Ρ‡ Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… заданиях, Π³Π΄Π΅ Π²Π°ΠΆΠ½ΠΎ быстро Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈ Π·Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ элСмСнты. Π₯отя для ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ Ρ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ спСциализированныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, для простых внутрипроцСссных Π·Π°Π΄Π°Ρ‡ коллСкция ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ благодаря своСй скорости ΠΈ простотС API.

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ использованиСм

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ массивом, списком ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ часто зависит ΠΎΡ‚ Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ссли Π½Π΅Ρ‚ ТСстких тСхничСских ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. Однако Π·Π½Π°Π½ΠΈΠ΅ спСцифики ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ позволяСт Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ инструмСнтарий ΠΈ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ нСстандартныС Π·Π°Π΄Π°Ρ‡ΠΈ Π±ΠΎΠ»Π΅Π΅ элСгантно.

МоТно Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ элСмСнта Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ послС добавлСния?

Π”Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ коллСкция Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π΅ являСтся строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ (Ссли Π²Ρ‹ сами Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ элСмСнт ΠΏΠΎ индСксу Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. НапримСр, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ строку Π½Π° число ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ справочника.

Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° количСство элСмСнтов Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ?

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ опрСдСляСтся доступным объСмом ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти процСсса 1Π‘ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ (32 ΠΈΠ»ΠΈ 64 Π±ΠΈΡ‚Π°). ВСорСтичСского Π»ΠΈΠΌΠΈΡ‚Π° Π½Π° количСство элСмСнтов Π² самом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Π½Π΅Ρ‚, Π½ΠΎ ΠΏΡ€ΠΈ достиТСнии дСсятков ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² записСй ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒΡΡ.

Как ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ?

Для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ удалСния всСх элСмСнтов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ(). ПослС Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° свойство ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 0, Π½ΠΎ сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ останСтся Π² памяти ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для добавлСния Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π»ΠΈ коллСкция сортировку?

НСт, Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π΅Ρ‚ встроСнного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ БписокЗначСний. Для сортировки Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΡ… Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΌ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈ нСобходимости ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, Π»ΠΈΠ±ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сортировки Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.