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

БущСствуСт нСсколько ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ этой Π·Π°Π΄Π°Ρ‡ΠΈ, начиная ΠΎΡ‚ простых ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ΠΎΠ² ΠΈ заканчивая использованиСм спСциализированных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (простыС значСния ΠΈΠ»ΠΈ структуры), объСма Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ основныС способы, ΠΈΡ… прСимущСства ΠΈ нСдостатки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ для вашСй ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ стоит ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ вопросу ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими объСмами Π΄Π°Π½Π½Ρ‹Ρ…. НСкоторыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, каТущиСся простыми Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, ΠΌΠΎΠ³ΡƒΡ‚ катастрофичСски Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ систСмы ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ количСства элСмСнтов. ΠœΡ‹ рассмотрим Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ синтаксис, Π½ΠΎ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

ИспользованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° БоотвСтствиС для ΡƒΠ½ΠΈΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π‘Π°ΠΌΡ‹ΠΌ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ часто Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΌ способом удалСния Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² являСтся использованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° БоотвСтствиС (Map). Π­Ρ‚ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ всСгда ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ сущСствуСт Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт Π»ΠΈΠ±ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ старый, Π»ΠΈΠ±ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ Π² зависимости ΠΎΡ‚ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΊΠΎΠ΄Π°.

Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ прост: ΠΌΡ‹ создаСм пустоС соотвСтствиС, ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΏΠΎ исходному массиву ΠΈ пытаСмся Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ»ΡŽΡ‡ΠΈ Π² БоотвСтствии Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ, всС Π΄ΡƒΠ±Π»ΠΈ автоматичСски ΠΎΡ‚ΡΠ΅ΠΈΠ²Π°ΡŽΡ‚ΡΡ. ПослС заполнСния ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ остаСтся лишь ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² массив. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со скалярными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…: строками, числами, ссылками Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании БоотвСтствия для слоТных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€) Π² качСствС ΠΊΠ»ΡŽΡ‡Π°, систСма Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² памяти, Π° Π½Π΅ ΠΈΡ… содСрТимоС. Π”Π²Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ структуры с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π±Π°Π·ΠΎΠ²ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ очистки. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… для строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ являСтся Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ программирования Π² 1Π‘.

Ѐункция Π£Π΄Π°Π»ΠΈΡ‚ΡŒΠ”ΡƒΠ±Π»ΠΈΠœΠ°ΡΡΠΈΠ²(Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ²)

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΡ = Новый БоотвСтствиС;

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ² Π¦ΠΈΠΊΠ»

// ΠŸΡ‹Ρ‚Π°Π΅ΠΌΡΡ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ элСмСнт ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡

// Если ΠΊΠ»ΡŽΡ‡ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ просто ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΈΠ»ΠΈ останСтся ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΡ.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, НСопрСдСлСно);

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

// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ массив ΠΊΠ»ΡŽΡ‡Π΅ΠΉ

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΡ.ΠšΠ»ΡŽΡ‡ΠΈ();

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ обСспСчиваСт Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°ΠΆΠ΅ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°Ρ… благодаря Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ† Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅. ВрСмя выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ растСт Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ количСства элСмСнтов, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π·Π°Π΄Π°Ρ‡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

πŸ’‘

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

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° массива структур ΠΈ слоТных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

Битуация услоТняСтся, ΠΊΠΎΠ³Π΄Π° массив содСрТит Π½Π΅ простыС значСния, Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚ΠΈΠΏΠ° Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈΠ»ΠΈ ЀиксированнаяБтруктура. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях стандартноС сравнСниС ΠΏΠΎ ссылкС Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΌ часто Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈ ΠΏΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ полям (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Ρƒ), игнорируя Π΄Ρ€ΡƒΠ³ΠΈΠ΅ различия Π² структурС.

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

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” использованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Найти для поиска Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ массивС ΠΏΠ΅Ρ€Π΅Π΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ. Π­Ρ‚ΠΎΡ‚ способ Π±ΠΎΠ»Π΅Π΅ наглядСн, Π½ΠΎ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта исходного массива. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° становится ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠΉ (O(n^2)), Ρ‡Ρ‚ΠΎ нСдопустимо ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ тысяч записСй.

  • πŸ” ΠšΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ: Быстро, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ аккуратности с раздСлитСлями строк.
  • 🐒 ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€: ΠŸΡ€ΠΎΡΡ‚ΠΎ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ….
  • βš™οΈ Запрос ΠΊ Π‘Π”: Π‘Π°ΠΌΡ‹ΠΉ быстрый способ, Ссли Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· SELECT DISTINCT.

Если структура Π΄Π°Π½Π½Ρ‹Ρ… позволяСт, Π»ΡƒΡ‡ΡˆΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π»ΠΎΠΆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ ΡƒΠ½ΠΈΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° сторону сСрвСра Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…. ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π ΠΠ—Π›Π˜Π§ΠΠ«Π• Π² языкС запросов 1Π‘ позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сразу ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ записСй, минуя этап ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ процСссор сСрвСра ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ формирования ΠΊΠ»ΡŽΡ‡Π° для структуры

ΠšΠ»ΡŽΡ‡ = Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°.НомСнклатура + "|" + Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°.Π‘ΠΊΠ»Π°Π΄; Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ записи с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€ΠΎΠΉ ΠΈ складом, Π΄Π°ΠΆΠ΅ Ссли Ρƒ Π½ΠΈΡ… Ρ€Π°Π·Π½ΠΎΠ΅ количСство ΠΈΠ»ΠΈ Ρ†Π΅Π½Π°.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

Π’Ρ‹Π±ΠΎΡ€ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ влияСт Π½Π° врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° систСмы. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· Ρ‚Ρ€Π΅Ρ… основных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ²: использованиС БоотвСтствия, ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ с поиском ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· запрос. ВСстированиС ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π½Π° массивС ΠΈΠ· 10 000 элСмСнтов с 30% Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ².

ΠœΠ΅Ρ‚ΠΎΠ΄ с использованиСм БоотвСтствия ΠΏΠΎΠΊΠ°Π·Π°Π» Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π² массив Π·Π° Π΄ΠΎΠ»ΠΈ сСкунды. ΠœΠ΅Ρ‚ΠΎΠ΄ с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΈ поиском Найти() ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π» Π² дСсятки Ρ€Π°Π· большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎ становится ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² сСансС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Запрос ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… оказался самым быстрым, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° установку соСдинСния ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ….

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ВрСмя (10k записСй) РСкомСндация
БоотвСтствиС (Map) O(n) ~5 мс Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅
Поиск Π² массивС O(n^2) ~2500 мс Волько для ΠΌΠ°Π»Ρ‹Ρ… списков (<100)
Запрос (Π ΠΠ—Π›Π˜Π§ΠΠ«Π•) Зависит ΠΎΡ‚ Π‘Π£Π‘Π” ~15 мс Для Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π‘Π”
Π’Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ O(n log n) ~20 мс Для слоТной Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ

Из Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ использованиС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² для поиска Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² катСгоричСски Π½Π΅ рСкомСндуСтся для производствСнных Π·Π°Π΄Π°Ρ‡ с большими объСмами Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°ΠΆΠ΅ нСбольшоС ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ "подвисанию" интСрфСйса. ВсСгда ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (БоотвСтствиС) ΠΈΠ»ΠΈ возмоТности Π‘Π£Π‘Π”.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ тСстировании ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ врСмя выполнСния ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ ΠΈ Ρ‚ΠΈΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π‘Π£Π‘Π” (SQL Server, PostgreSQL, File).

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ удалСния Π΄ΡƒΠ±Π»Π΅ΠΉ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
БоотвСтствиС (Новый БоотвСтствиС)
Запрос с Π ΠΠ—Π›Π˜Π§ΠΠ«Π•
Π¦ΠΈΠΊΠ» с поиском (Найти)
Π’Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
НС знаю/НС ΡƒΠ΄Π°Π»ΡΡŽ

Уникализация с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π’Π°Π±Π»ΠΈΡ†Ρ‹ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

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

Для удалСния ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ΠΠΎΠΌΠ΅Ρ€Π°Π‘Ρ‚Ρ€ΠΎΠΊ() ΠΈΠ»ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° Π² Π½ΠΎΠ²Ρ‹ΠΉ массив с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Однако Ρ‡Π°Ρ‰Π΅ всСго Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Ρ€ΡŽΠΊ с Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ: ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π½ΠΎΠ²ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ измСрСния ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΉ инструмСнт, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ Ρ‡ΡƒΡ‚ΡŒ большС ΠΊΠΎΠ΄Π°, Ρ‡Π΅ΠΌ БоотвСтствиС.

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

Ѐункция Π£Π½ΠΈΠΊΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Π—(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ’Π—)

// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ копию ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡƒΡŽ Π’Π— с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π’Π— = Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ’Π—.Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠšΠΎΠ»ΠΎΠ½ΠΊΠΈ();

// Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π’Π—.Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ(Π˜ΡΡ…ΠΎΠ΄Π½Π°ΡΠ’Π—.Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ());

// Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ для ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("Код, НаимСнованиС");

// Уникализация Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΡƒ Π² массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ

// Или использованиС спСцифичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² зависимости ΠΎΡ‚ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹

ΠœΠ°ΡΡΠΈΠ²Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π’Π—.Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠšΠΎΠ»ΠΎΠ½ΠΊΡƒ("Код");

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠœΠ°ΡΡΠΈΠ²Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ;

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

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

πŸ’‘

Π’Π°Π±Π»ΠΈΡ†Π° Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€, ΠΊΠΎΠ³Π΄Π° уникализация являСтся лишь ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ этапом ΠΏΠ΅Ρ€Π΅Π΄ слоТной аналитичСской ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠΌ.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ сравнСниСм

ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² критичСски Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ сравниваСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Число, Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΈ Π”Π°Ρ‚Π°, ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. БсылочныС Ρ‚ΠΈΠΏΡ‹ (Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ, Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚) ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ ссылки, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ соотвСтствуСт ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌΡƒ повСдСнию.

Однако ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π½ΡŽΠ°Π½ΡΡ‹ с Ρ‚ΠΈΠΏΠΎΠΌ Π₯ранилищСЗначСния ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ COM. Они ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ стандартными ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ строк: ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ сравнСниС строк Π² 1Π‘ рСгистрозависимоС, поэтому "Π’ΠΎΠ²Π°Ρ€" ΠΈ "Ρ‚ΠΎΠ²Π°Ρ€" Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ элСмСнтами. Для привСдСния ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ() ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ рСгистра.

Если Π² массивС ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ значСния НСопрСдСлСно (Null), ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Если Π² массивС нСсколько пустых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ оставлСны ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ элСмСнт ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ Π² зависимости ΠΎΡ‚ вашСй Π»ΠΎΠ³ΠΈΠΊΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. РСкомСндуСтся явно Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ пустыС значСния ΠΏΠ΅Ρ€Π΅Π΄ запуском ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΡƒΠ½ΠΈΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

  • πŸ”  РСгистр символов: "А" ΠΈ "Π°" β€” это Ρ€Π°Π·Π½Ρ‹Π΅ строки для 1Π‘.
  • πŸ“… Π”Π°Ρ‚Ρ‹: Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ сСкунды (ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ΅, Ссли ΡƒΠΊΠ°Π·Π°Π½ΠΎ).
  • πŸ”— Бсылки: Π Π°Π·Π½Ρ‹Π΅ ссылки Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² 1Π‘, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… систСмах) ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с числами ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… точности вычислСний. Число 10.0000001 ΠΈ 10 ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ, Ссли Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅. ΠŸΠ΅Ρ€Π΅Π΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄ΠΈΡ‚Π΅ числа ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ точности.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ возмоТности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ (8.2, 8.3, 8.3.20+). ВсСгда провСряйтС синтаксис-ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ для вашСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π°.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы ΠΏΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ Π΄ΡƒΠ±Π»Π΅ΠΉ

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈ ΠΈΠ· массива структур ΠΏΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ полю?

Для этого создайтС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ БоотвСтствиС. Π’ Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массива Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠΉΡ‚Π΅ строковый ΠΊΠ»ΡŽΡ‡ ΠΈΠ· значСния Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ поля структуры (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°.Артикул). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ этот ΠΊΠ»ΡŽΡ‡ для вставки Π² БоотвСтствиС. Π’ качСствС значСния ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ саму структуру ΠΈΠ»ΠΈ индСкс. Π’ ΠΊΠΎΠ½Ρ†Π΅ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ значСния ΠΈΠ»ΠΈ ΠΊΠ»ΡŽΡ‡ΠΈ Π² зависимости ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠœΠ΅Π½ΡΠ΅Ρ‚ΡΡ Π»ΠΈ порядок элСмСнтов послС использования БоотвСтствия?

Π’ соврСмСнных вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ порядок ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² БоотвСтствии ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ сохраняСтся Π² порядкС добавлСния. Однако спСцификация языка Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ это строго для всСх сцСнариСв. Если порядок ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½, рСкомСндуСтся послС ΡƒΠ½ΠΈΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ²Π½ΡƒΡŽ сортировку Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ массива.

Π§Ρ‚ΠΎ быстрСС: запрос с Π ΠΠ—Π›Π˜Π§ΠΠ«Π• ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ» Π² ΠΊΠΎΠ΄Π΅?

Запрос с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π ΠΠ—Π›Π˜Π§ΠΠ«Π• всСгда быстрСС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ уникализация выполняСтся Π½Π° сторонС сСрвСра Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для Ρ‚Π°ΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π¦ΠΈΠΊΠ» Π² ΠΊΠΎΠ΄Π΅ Π½Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ сСрвСр ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ всСх Π΄Π°Π½Π½Ρ‹Ρ… (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΄ΡƒΠ±Π»ΠΈ) ΠΏΠΎ сСти.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π’Π°Π±Π»ΠΈΡ†Ρƒ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для массива строк?

Π”Π°, ΠΌΠΎΠΆΠ½ΠΎ. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π’Π°Π±Π»ΠΈΡ†Ρƒ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΎΠΉ Ρ‚ΠΈΠΏΠ° Π‘Ρ‚Ρ€ΠΎΠΊΠ°. Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π² Π½Π΅Ρ‘ массив. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния. Π­Ρ‚ΠΎ ΠΌΠ΅Π½Π΅Π΅ эффСктивно ΠΏΠΎ памяти, Ρ‡Π΅ΠΌ БоотвСтствиС, Π½ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ссли Π΄Π°Π»Π΅Π΅ планируСтся Ρ€Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ°ΠΊ с Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ.