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

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ 5 основных способов добавлСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² массив 1Π‘ β€” ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ() Π΄ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с динамичСскими коллСкциями ΠΈ структурами. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ нюансам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ описаны Π² стандартной Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ: ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ дублирования элСмСнтов, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠ½ΠΎΠ³Π΄Π° Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ() Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(), ΠΈ Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли массив suddenly становится "нСизмСняСмым". ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° протСстированы Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ 8.3.22).

1. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅()

Π‘Π°ΠΌΡ‹ΠΉ распространённый способ ΠΏΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ массив β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(). Он ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° сцСнариСв, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ просто Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт Π² ΠΊΠΎΠ½Π΅Ρ† ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Бинтаксис минималистичСн:

ΠœΠ°ΡΡΠΈΠ²Π’ΠΎΠ²Π°Ρ€ΠΎΠ² = Новый Массив;

ΠœΠ°ΡΡΠΈΠ²Π’ΠΎΠ²Π°Ρ€ΠΎΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Молоко");

ΠœΠ°ΡΡΠΈΠ²Π’ΠΎΠ²Π°Ρ€ΠΎΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π₯Π»Π΅Π±");

ΠœΠ°ΡΡΠΈΠ²Π’ΠΎΠ²Π°Ρ€ΠΎΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(100); // МоТно ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π’Π°ΠΆΠ½Ρ‹Π΅ особСнности ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

  • πŸ”Ή АвтоматичСскоС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅: массив динамичСски ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ элСмСнта.
  • πŸ”Ή Випизация: Π² ΠΎΠ΄ΠΈΠ½ массив ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ значСния Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (строка, число, Π΄Π°Ρ‚Π° ΠΈ Ρ‚.Π΄.), Π½ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.
  • πŸ”Ή ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (10 000+ элСмСнтов) рСкомСндуСтся Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Ρ‡Π΅Ρ€Π΅Π· Новый Массив(10000).

Ошибка, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ часто Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ β€” ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт Π² массив, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ°ΠΊ НСопрСдСлён:

ΠŸΠ΅Ρ€Π΅ΠΌ ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ…; // ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°!

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ….Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("ВСст"); // Π’Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ: "ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ… Π½Π΅ являСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°"

πŸ’‘

Если Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ нСсколько элСмСнтов сразу, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ конструктор массива: Массив = Новый Массив(1, 2, 3, "А", "Π‘"). Π­Ρ‚ΠΎ быстрСС, Ρ‡Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ()

2. Вставка элСмСнтов ΠΏΠΎ индСксу: Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ()

Когда трСбуСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт Π½Π΅ Π² ΠΊΠΎΠ½Π΅Ρ†, Π° Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ массива, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(). Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: индСкс (позиция, ΠΊΡƒΠ΄Π° Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ) ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. НумСрация индСксов начинаСтся с 0:

Π¦Π²Π΅Ρ‚Π° = Новый Массив("ΠšΡ€Π°ΡΠ½Ρ‹ΠΉ", "Π—Π΅Π»Ρ‘Π½Ρ‹ΠΉ", "Π‘ΠΈΠ½ΠΈΠΉ");

Π¦Π²Π΅Ρ‚Π°.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(1, "Π–Ρ‘Π»Ρ‚Ρ‹ΠΉ"); // Вставим ΠΌΠ΅ΠΆΠ΄Ρƒ "ΠšΡ€Π°ΡΠ½Ρ‹ΠΌ" ΠΈ "Π—Π΅Π»Ρ‘Π½Ρ‹ΠΌ"

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: ["ΠšΡ€Π°ΡΠ½Ρ‹ΠΉ", "Π–Ρ‘Π»Ρ‚Ρ‹ΠΉ", "Π—Π΅Π»Ρ‘Π½Ρ‹ΠΉ", "Π‘ΠΈΠ½ΠΈΠΉ"]

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Π½ΡŽΠ°Π½ΡΡ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

  • πŸ”Έ Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ элСмСнтов: всС элСмСнты послС ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ индСкса автоматичСски ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π²ΠΏΡ€Π°Π²ΠΎ.
  • πŸ”Έ Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹: Ссли ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ индСкс большС Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(10, "Π§Ρ‘Ρ€Π½Ρ‹ΠΉ") Π² массив ΠΈΠ· 3 элСмСнтов), ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° выбросит ΠΎΡˆΠΈΠ±ΠΊΡƒ.
  • πŸ”Έ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: опСрация Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ() ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ пСрСраспрСдСлСния памяти для сдвига элСмСнтов.
Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΏΡ€ΠΈ вставкС Π² ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ индСкс?

ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ индСкса (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(-1, "Π€ΠΈΠΎΠ»Π΅Ρ‚ΠΎΠ²Ρ‹ΠΉ")) ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ с ΠΊΠΎΠ½Ρ†Π° массива. Π’ΠΎ Π΅ΡΡ‚ΡŒ -1 β€” это послСдний элСмСнт, -2 β€” прСдпослСдний ΠΈ Ρ‚.Π΄. Однако Ρ‚Π°ΠΊΠΎΠΉ Ρ‚Ρ€ΡŽΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния элСмСнтов, Π½ΠΎ Π½Π΅ для вставки! ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ индСксу Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ "ИндСкс Π²Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ† массива".

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π² Π½Π°Ρ‡Π°Π»ΠΎ массива строк:

ΠžΡ‚Ρ‡Ρ‘Ρ‚Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅ = Новый Массив("Π―Π½Π²Π°Ρ€ΡŒ", "Π€Π΅Π²Ρ€Π°Π»ΡŒ", "ΠœΠ°Ρ€Ρ‚");

ΠžΡ‚Ρ‡Ρ‘Ρ‚Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(0, "ΠšΠ²Π°Ρ€Ρ‚Π°Π» 1");

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: ["ΠšΠ²Π°Ρ€Ρ‚Π°Π» 1", "Π―Π½Π²Π°Ρ€ΡŒ", "Π€Π΅Π²Ρ€Π°Π»ΡŒ", "ΠœΠ°Ρ€Ρ‚"]

3. ОбъСдинСниС массивов: Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ() с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ

Если Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² массив Π½Π΅ ΠΎΠ΄ΠΈΠ½ элСмСнт, Π° Ρ†Π΅Π»ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ() Π΅ΡΡ‚ΡŒ пСрСгруТСнная вСрсия с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ: Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ). Когда Π² качСствС Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ пСрСдаётся Π΄Ρ€ΡƒΠ³ΠΎΠΉ массив, происходит Π΅Π³ΠΎ объСдинСниС с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ:

ОсновнойМассив = Новый Массив(1, 2, 3);

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ² = Новый Массив(4, 5);

ОсновнойМассив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ²);

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: [1, 2, 3, [4, 5]] – Π’ΠΠ˜ΠœΠΠΠ˜Π•! Π’Π°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΠ•ΠŸΠ ΠΠ’Π˜Π›Π¬ΠΠž!

Π­Ρ‚ΠΎ типичная ошибка! Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ массивы (Π° Π½Π΅ Π²Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ() для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта:

ОсновнойМассив = Новый Массив(1, 2, 3);

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ² = Новый Массив(4, 5);

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ² Π¦ΠΈΠΊΠ»

ОсновнойМассив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

// ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: [1, 2, 3, 4, 5]

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ объСдинСния массивов Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Π¦ΠΈΠΊΠ» Для КаТдого
ΠœΠ΅Ρ‚ΠΎΠ΄ Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ() Π² Ρ†ΠΈΠΊΠ»Π΅
Ѐункция Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΠœΠ°ΡΡΠΈΠ²Ρ‹()
Бвоя рСализация
ΠœΠ΅Ρ‚ΠΎΠ΄ Бинтаксис ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для
Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(10) ⭐⭐⭐⭐⭐ Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Ρ… элСмСнтов Π² ΠΊΠΎΠ½Π΅Ρ†
Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(ИндСкс, Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) Массив.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(0, "Новый") ⭐⭐⭐ Вставка Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ
Π¦ΠΈΠΊΠ» Для КаТдого Для КаТдого Π­Π» Из Массив2 Π¦ΠΈΠΊΠ» Массив1.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π») ⭐⭐⭐⭐ ОбъСдинСниС массивов
Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΠœΠ°ΡΡΠΈΠ²Ρ‹() (ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Π°Ρ функция) Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΠœΠ°ΡΡΠΈΠ²Ρ‹(Массив1, Массив2) ⭐⭐⭐⭐⭐ ЧастоС объСдинСниС Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов

4. Π Π°Π±ΠΎΡ‚Π° с динамичСскими массивами (БписокЗначСний ΠΈ БоотвСтствиС)

Π’ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΠΏΠΎΠΌΠΈΠΌΠΎ стандартного Ρ‚ΠΈΠΏΠ° Массив Π΅ΡΡ‚ΡŒ спСциализированныС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ: БписокЗначСний ΠΈ БоотвСтствиС. Они ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности, Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ свои особСнности ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ элСмСнтов.

БписокЗначСний ΡƒΠ΄ΠΎΠ±Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Ρ‹ "Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ + прСдставлСниС" (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… списков Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ…):

БписокВоваров = Новый БписокЗначСний;

БписокВоваров.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅", 101, "Молоко 3.2%"));

БписокВоваров.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅", 102, "Π₯Π»Π΅Π± Бородинский"));

БоотвСтствиС (Π°Π½Π°Π»ΠΎΠ³ словаря) позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ элСмСнты ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ:

Π¦Π΅Π½Ρ‹Π’ΠΎΠ²Π°Ρ€ΠΎΠ² = Новый БоотвСтствиС;

Π¦Π΅Π½Ρ‹Π’ΠΎΠ²Π°Ρ€ΠΎΠ².Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Молоко", 65.50);

Π¦Π΅Π½Ρ‹Π’ΠΎΠ²Π°Ρ€ΠΎΠ².Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Π₯Π»Π΅Π±", 42.00);

// Доступ ΠΊ элСмСнту: Π¦Π΅Π½Π° = Π¦Π΅Π½Ρ‹Π’ΠΎΠ²Π°Ρ€ΠΎΠ²["Молоко"];

Π’Π°ΠΆΠ½Ρ‹Π΅ отличия ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ массива:

  • πŸ“Œ Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ: Π² БоотвСтствии нСльзя Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π²Π° элСмСнта с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ (послСдний ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ).
  • πŸ“Œ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ доступ: элСмСнты БоотвСтствия Π½Π΅ упорядочСны, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Массива ΠΈΠ»ΠΈ БпискаЗначСний.
  • πŸ“Œ ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ добавлСния: вмСсто Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(ΠšΠ»ΡŽΡ‡, Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅).
πŸ’‘

Для хранСния Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… (1000+ элСмСнтов) с быстрым поиском ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ БоотвСтствиС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ эффСктивнСС, Ρ‡Π΅ΠΌ массив, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.

5. ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°ΠΌΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок

Π’ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡Π°Ρ… Ρ€Π΅Π΄ΠΊΠΎ трСбуСтся просто Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт Π² массив. Π§Π°Ρ‰Π΅ Π½ΡƒΠΆΠ½ΠΎ:

  1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ²
  2. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ добавлСния НСопрСдСлён)
  3. Π”ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ элСмСнты условно (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π½Π° Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΠ£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚(Массив, НовыйЭлСмСнт)

Если НЕ Массив.Найти(НовыйЭлСмСнт) Π’ΠΎΠ³Π΄Π°

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(НовыйЭлСмСнт);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ:

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(НСопрСдСлён); // ΠŸΡ€ΠΎΠ²ΠΎΡ†ΠΈΡ€ΡƒΠ΅ΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Ошибка добавлСния: " + ОписаниСОшибки());

// ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ массив ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ (НЕ НСопрСдСлён)|ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ добавляСмого значСния (Ссли трСбуСтся)|ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅|Π£Ρ‡Π΅ΡΡ‚ΡŒ ограничСния Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ массива (для статичСских массивов)-->

Для слоТных сцСнариСв (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ с сортировкой) Π»ΡƒΡ‡ΡˆΠ΅ вынСсти Π»ΠΎΠ³ΠΈΠΊΡƒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

Ѐункция Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΠ‘Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ(Массив, НовыйЭлСмСнт)

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(НовыйЭлСмСнт);

Массив.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(НаправлСниСБортировки.Π’ΠΎΠ·Ρ€);

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Массив;

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

6. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами Π² Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях 1Π‘

ПовСдСниС массивов ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ различия:

1Π‘ 8.2 vs 8.3:

  • ⚑ Π’ 8.2 ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ НСопрСдСлён, Ссли элСмСнт Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½. Π’ 8.3 β€” -1.
  • ⚑ Π’ 8.3.10+ появилась ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π”ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΉΠœΠ°ΡΡΠΈΠ² (Π°Π½Π°Π»ΠΎΠ³ ArrayList Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для частых вставок/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΉ.

Π’ΠΎΠ½ΠΊΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΈ Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹:

  • 🌐 Π’ Ρ‚ΠΎΠ½ΠΊΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ массивы ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π½Π° сСрвСр ΠΏΠΎ ссылкС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ измСнСниям Π΄Π°Π½Π½Ρ‹Ρ….
  • 🌐 Π’ Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… массивов (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΄ΠΎ 10 ΠœΠ‘).
Если Π›ΠΎΠΆΡŒ Π’ΠΎΠ³Π΄Π° // Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ выполнится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ВСрсия ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹: " + Π‘Ρ‚Ρ€ΠΎΠΊΠ°(ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Π’Π΅Ρ€ΡΠΈΡ()));

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

-->

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ вСрсии:

Если ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Π’Π΅Ρ€ΡΠΈΡ() >= "8.3.10" Π’ΠΎΠ³Π΄Π°

Массив = Новый Π”ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΉΠœΠ°ΡΡΠΈΠ²; // Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ

Π˜Π½Π°Ρ‡Π΅

Массив = Новый Массив;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π±Π΅Π· ΠΊΠΎΠ΄Π°?

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π³Π»Π°Π²Π½ΠΎΠ΅ мСню 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π‘ΠΏΡ€Π°Π²ΠΊΠ° β†’ О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π’ ΠΎΠΊΠ½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π° точная вСрсия ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 8.3.22.1830).

7. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ массивов. Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ самыС распространённыС ошибки:

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚Π΅ массив Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ (Π±Π΅Π· ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова ΠŸΠ΅Ρ€Π΅ΠΌ), всС измСнСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ сохранятся Π² исходном массивС. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΏΠΎ ссылкС: ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠœΠ°ΡΡΠΈΠ²(Массив ΠŸΠ΅Ρ€Π΅ΠΌ).

Ошибка 1: "ИндСкс Π²Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ† массива"

Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ индСксу. РСшСниС β€” всСгда ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΏΠ΅Ρ€Π΅Π΄ доступом:

Если ИндСкс >= 0 И ИндСкс < Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() Π’ΠΎΠ³Π΄Π°

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ = Массив[ИндСкс];

Π˜Π½Π°Ρ‡Π΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("НСкоррСктный индСкс!");

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

Ошибка 2: ΠŸΠΎΡ‚Π΅Ρ€Ρ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ присваивании

Π’ 1Π‘ массивы β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ = ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ссылку, Π° Π½Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

Массив1 = Новый Массив(1, 2, 3);

Массив2 = Массив1; // Π­Ρ‚ΠΎ НЕ копия, Π° ссылка!

Массив2.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(4);

// Π’Π΅ΠΏΠ΅Ρ€ΡŒ Массив1 Ρ‚ΠΎΠΆΠ΅ содСрТит [1, 2, 3, 4]!

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ копию, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Массив2 = Массив1.Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ().

Ошибка 3: НСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²

1Π‘ автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏΡ‹ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…:

Массив = Новый Массив;

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("123"); // Π‘Ρ‚Ρ€ΠΎΠΊΠ°

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(456); // Число

// ΠŸΡ€ΠΈ сортировкС "123" Π±ΡƒΠ΄Π΅Ρ‚ большС Ρ‡Π΅ΠΌ 456!

FAQ: ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° частыС вопросы

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт Π² Π½Π°Ρ‡Π°Π»ΠΎ массива Π±Π΅Π· сдвига всСх элСмСнтов?

Π’ стандартном массивС 1Π‘ это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ β€” ΠΌΠ΅Ρ‚ΠΎΠ΄ Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(0, Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) всСгда сдвигаСт ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты, Ρ‡Ρ‚ΠΎ сниТаСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

  1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ БписокЗначСний с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ() β€” ΠΎΠ½ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для Ρ‚Π°ΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.
  2. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ массив ΠΈ скопируйтС элСмСнты Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС.
  3. Π’ 1Π‘ 8.3.10+ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π”ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΉΠœΠ°ΡΡΠΈΠ².
МоТно Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² массив элСмСнт Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ массива (Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ массив)?

Π”Π°, Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ объСдинСниСм:

  • πŸ”Ή Массив1.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Массив2) β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ Массив2 ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ элСмСнт (Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅).
  • πŸ”Ή Π¦ΠΈΠΊΠ» Для КаТдого β€” ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ элСмСнты (см. Ρ€Π°Π·Π΄Π΅Π» 3 ΡΡ‚Π°Ρ‚ΡŒΠΈ).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ массива:

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° = Новый Массив;

Π‘Ρ‚Ρ€ΠΎΠΊΠ°1 = Новый Массив(1, 2, 3);

Π‘Ρ‚Ρ€ΠΎΠΊΠ°2 = Новый Массив(4, 5, 6);

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π°.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°1);

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π°.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°2);

// ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π°[0] β€” это массив [1, 2, 3]

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² массив Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· запроса 1Π‘?

Для добавлСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запроса Π² массив ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ() с Ρ†ΠΈΠΊΠ»ΠΎΠΌ:

Запрос = Новый Запрос;

Запрос.ВСкст = "ВЫБРАВЬ НаимСнованиС Π˜Π— Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура";

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π—Π°ΠΏΡ€ΠΎΡΠ° = Запрос.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ();

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ… = Новый Массив;

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π—Π°ΠΏΡ€ΠΎΡΠ°.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ();

Пока Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ() Π¦ΠΈΠΊΠ»

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ….Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.НаимСнованиС);

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

Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ (1000+ строк) Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Массив = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π—Π°ΠΏΡ€ΠΎΡΠ°.Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ() β€” это быстрСС, Ρ‡Π΅ΠΌ построчноС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ послС добавлСния элСмСнтов массив становится "нСизмСняСмым"?

Π­Ρ‚ΠΎ происходит, Ссли:

  1. Массив Π±Ρ‹Π» ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΠΈΠ· нСизмСняСмого источника (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π’ΠœΠ°ΡΡΠΈΠ²() Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹ΠΉ).
  2. Π’Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² бСзопасном Ρ€Π΅ΠΆΠΈΠΌΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²Π°ΠΌΠΈ).
  3. Массив Π±Ρ‹Π» зафиксирован для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ контСкстами (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅).

РСшСниС: всСгда явно создавайтС измСняСмый массив:

Массив = Новый Массив(,, Π˜ΡΡ‚ΠΈΠ½Π°); // Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ "Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹ΠΉ"
Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² массив структуру ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ слоТный Ρ‚ΠΈΠΏ?

ΠœΠ°ΡΡΠΈΠ²Ρ‹ 1Π‘ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π»ΡŽΠ±Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ структуры, соотвСтствия ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ справочников. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

ΠœΠ°ΡΡΠΈΠ²ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² = Новый Массив;

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°Π”Π°Π½Π½Ρ‹Ρ… = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("Имя, Возраст, ДатаРоТдСния", "Иван", 30, '1993-05-15');

ΠœΠ°ΡΡΠΈΠ²ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°Π”Π°Π½Π½Ρ‹Ρ…);

// Доступ ΠΊ полям структуры:

Имя = ΠœΠ°ΡΡΠΈΠ²ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²[0].Имя;

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