Java Guru πŸ€“
13.3K subscribers
938 photos
15 videos
793 links
Канал с вопросами ΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ с собСсСдований!

По сотрудничСству ΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ΅: @NadikaKir

Канал Π² ΠΏΠ΅Ρ€Π΅Ρ‡Π½Π΅ РКН: https://vk.cc/cJrSQZ

ΠœΡ‹ Π½Π° Π±ΠΈΡ€ΠΆΠ΅: telega.in/channels/javatasks/card?r=lcDuijdm
Download Telegram
ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ имя класса Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π°?

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² .java Ρ„Π°ΠΉΠ»Π΅ Π±Ρ‹Π» Π½Π΅ большС Ρ‡Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ класс Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ совпадало с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»Π°. ВсС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°.

Protected ΠΈ private классов Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Π° Π²ΠΎΡ‚ Π½Π° package-protected это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ распространяСтся. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ класс Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° доступа ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ любоС имя. Π’Π°ΠΊΠΆΠ΅ это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ рядом с основным ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ классом Ρ„Π°ΠΉΠ»Π° (ΠΈΠ»ΠΈ вмСсто Π½Π΅Π³ΠΎ) ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ любоС количСство Π΄Ρ€ΡƒΠ³ΠΈΡ… классов Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° доступа, с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. Они Π±ΡƒΠ΄ΡƒΡ‚ доступны Π²Π½ΡƒΡ‚Ρ€ΠΈ всСго ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ – ΠΌΠΎΠΆΠ΅Ρ‚.


Java GuruπŸ€“ #java
πŸ‘15πŸ”₯4❀2🌚1
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ компиляции этого ΠΊΠΎΠ΄Π°?
πŸ”₯6πŸ‘4
Как Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ стримы?

ΠŸΠ°ΠΊΠ΅Ρ‚ java.util.stream – это срСдства ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ стилС. Они Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ (ΠΊΡ€ΠΎΠΌΠ΅ названия) с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ примСнСния – конвСртация, ΠΏΠ΅Ρ€Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°, ΠΈ агрСгация Π΄Π°Π½Π½Ρ‹Ρ….

Π’Ρ€ΠΈ основных понятия Java Stream API – источник Π΄Π°Π½Π½Ρ‹Ρ…, промСТуточная (intermediate), ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ (terminal) ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ»ΠΈ динамичСский Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ бСсконСчный. Π‘Π°ΠΌ источник Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ модифицируСтся ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ опСрациями.

ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ стрим. На ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ опСрация «потрСбляСт» ΠΏΠΎΡ‚ΠΎΠΊ. Она ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π°, Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ взятым стримом. Π‘Ρ‚Ρ€ΠΈΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π»Π΅Π½ΠΈΠ²ΠΎ – вся Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π΅ Π½Π°Ρ‡Π½Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования стримов – map-reduce. Map – промСТуточная опСрация, reduce – Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ характСристик ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свойства – элСмСнты пСрСчислСния StreamOpFlag:
β€’ SORTED – ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ элСмСнты;
β€’ ORDERED – ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ порядок ΠΎΠ±Ρ…ΠΎΠ΄Π°;
β€’ DISTINCT – содСрТит ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты, Π±Π΅Π· Π΄ΡƒΠ±Π»Π΅ΠΉ;
β€’ SIZED – ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€;
β€’ SHORT_CIRCUIT – опСрация, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΌΡƒ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΡŽ.


Java GuruπŸ€“ #java
πŸ‘7❀5πŸ”₯3
КакиС Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΎΠΉ Π² Java?

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Числа ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π² Java хранятся Π² дискрСтной ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ фиксированный объСм. Из этого Π²Ρ‹Ρ‚Π΅ΠΊΠ°Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Когда Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ арифмСтичСской ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Ρ‚ ΠΏΠΎ ΠΊΡ€ΡƒΠ³Ρƒ – максимальноС становится ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ, Π»ΠΈΠ±ΠΎ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Вакая ситуация называСтся ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ (underflow/overflow).

РСшСниС: Ссли ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ пСрСполнСния Π·Π½Π°Ρ‡ΠΈΠΌΠ°, ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с суффиксом *Exact ΠΈΠ· классС Math. Π­Ρ‚ΠΎ бСзопасныС Π°Π½Π°Π»ΠΎΠ³ΠΈ арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ€ΠΎΡΠ°ΡŽΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² случаС пСрСполнСния.

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎ-зависимыС округлСния.
По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ JVM ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ арифмСтичСскиС вычислСния насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ. ΠŸΡ€Π΅Π΄Π΅Π»Ρ‹ точности ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния. Π­Ρ‚ΠΎ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΡŽΡ‚ строгиС трСбования пСрСносимости, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСний Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π½Π° любом ΠΆΠ΅Π»Π΅Π·Π΅.

РСшСниС: ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ strictfp Π² объявлСнии класса ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ вычислСний ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΉ спСцификации IEEE 754. Π—Π° это ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡ…ΡƒΠ΄ΡˆΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

ArithmeticException.
ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ происходит, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π° ноль. Π­Ρ‚ΠΎ ΠΆΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±Ρ€ΠΎΡΠ°ΡŽΡ‚ бСзопасныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ· Math.

РСшСниС: Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π›ΡƒΡ‡ΡˆΠΈΠΉ способ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ логичСскиС ошибки – ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ΄ Unit-тСстами.


Java GuruπŸ€“ #java
πŸ‘8❀4πŸ”₯3
ΠžΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π»ΠΈ сокращСнныС ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹?

Java ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ программисту ΡΠΎΠΊΡ€Π°Ρ‰Π΅Π½Π½ΡƒΡŽ запись для примСнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с сохранСниСм ΠΎΡ‚Π²Π΅Ρ‚Π° Π² ΠΎΠΏΠ΅Ρ€Π°Π½Π΄. Π­Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ +=, &=, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Π˜Ρ… ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ – ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ слоТного присваивания (compound assignment). Π‘ΠΎΠΊΡ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅ вСрсии Π΅ΡΡ‚ΡŒ для всСх арифмСтичСских ΠΈ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

Π£ Ρ‚Π°ΠΊΠΈΡ… сокращСний Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠΎΠ»Π½Ρ‹Ρ… вСрсий. Если ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ, Ρ‚Π°ΠΌ сказано, Ρ‡Ρ‚ΠΎ x += y – это Π½Π° самом Π΄Π΅Π»Π΅ сокращСниС ΠΎΡ‚ x = (XType)(x + y). Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΊΡ€ΠΎΠΌΠ΅ самой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ происходит ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΊ Ρ‚ΠΈΠΏΡƒ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°.

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


Java GuruπŸ€“ #java
πŸ‘26πŸ”₯6❀4
Π›ΠΈΡˆΠ°Π΅Ρ‚ Π»ΠΈ var строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ?

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово var появилось Π² Java 10. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ var вмСсто Ρ‚ΠΈΠΏΠ° локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ примСняСт ΠΊ Π½Π΅ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚ΠΈΠΏΠΎΠ² (type inference). Π’ΠΈΠΏ Π±ΡƒΠ΄Π΅Ρ‚ вычислСн Π½Π° этапС компиляции ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, Ρ‡Π΅ΠΌ пСрСмСнная инициализируСтся.

ΠžΡ‚ΡΡŽΠ΄Π° нСсколько Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ². Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ var Π² полях класса, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΈ Π³Π΄Π΅-Π»ΠΈΠ±ΠΎ Π΅Ρ‰Π΅ ΠΊΡ€ΠΎΠΌΠ΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, обязана Π±Ρ‹Ρ‚ΡŒ инициализация с понятным Ρ‚ΠΈΠΏΠΎΠΌ – Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ var x; ΠΈΠ»ΠΈ var x = null; Π½Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

И Π³Π»Π°Π²Π½ΠΎΠ΅ слСдствиС – ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ компиляции Ρƒ Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… фиксированный ΠΈ извСстный Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΠΏΠΎΠ·Π΄Π½Π΅Π΅. А это ΠΈ Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠžΡ‚Π²Π΅Ρ‚: Π½Π΅Ρ‚, Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ – строгий. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, типизация остаСтся статичСской.

Π“Π»Π°Π²Π½ΠΎΠ΅ ΡƒΠΏΡƒΡ‰Π΅Π½ΠΈΠ΅ – Π² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ diamond operator. Π’ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°Ρ… Π² Π½Ρ‘ΠΌ вывСдСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ generic-Ρ‚ΠΈΠΏ, Π½ΠΎ Π² случаС var ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ нСдостаточно, ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Object.


Java GuruπŸ€“ #java
πŸ”₯9πŸ‘5❀1
Π§Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, ArrayList ΠΈΠ»ΠΈ LinkedList?

Π‘Π°ΠΌΡ‹ΠΉ ΠΈΠ·Π±ΠΈΡ‚Ρ‹ΠΉ вопрос. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ Π·Π½Π°Π½ΠΈΠ΅ особСнностСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (кишки ArrayList, кишки LinkedList) ΠΈ эффСктивности ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² этих Ρ€Π°Π·Π½Ρ‹Ρ… рСализациях. Π’ вопрос ΠΈΠ½ΠΎΠ³Π΄Π° Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Vector – пСрСсинхронизированный ΠΈ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ArrayList, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΡƒΡ‡ΡˆΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Collections.synchronizedList().

ArrayList Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² массивС, LinkedList Π² двусвязном спискС. Из этого Π²Ρ‹Ρ‚Π΅ΠΊΠ°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΈΡ†Π° Π² эффСктивности Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ: ArrayList Π»ΡƒΡ‡ΡˆΠ΅ справляСтся с измСнСниями Π² сСрСдинС ΠΈ ростом Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… capacity, LinkedList – Π½Π° краях. Π’ Ρ†Π΅Π»ΠΎΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ArrayList Π»ΡƒΡ‡ΡˆΠ΅.

Π‘Ρ‚ΠΎΠΈΡ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° краях Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для этого спроСктированного интСрфСйса Deque: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠ»ΡŒΡ†Π΅Π²ΠΎΠΉ Π±ΡƒΡ„Π΅Ρ€ ArrayDeque.


Java GuruπŸ€“ #java
πŸ‘9❀4πŸ”₯3🐳2
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΊΠΎΠ΄Π°?
πŸ‘7πŸ”₯3❀1
πŸ”₯12πŸ‘8🀣4❀2
Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· ArrayList ΠΏΡ€ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ?

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ формулируСтся Π² Π²ΠΈΠ΄Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Β«Ρ‡Ρ‚ΠΎ здСсь Π½Π΅ Ρ‚Π°ΠΊΒ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

for (String item : arrayList)
if (item.length() > 2)
arrayList.remove(item);

ΠŸΠΎΠ΄Π²ΠΎΡ… Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ArrayList, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚Π°ΠΊΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Ρ†ΠΈΠΊΠ»Π° for, являСтся fail-fast, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ с ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ. А ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ модификация случаСтся Π΄Π°ΠΆΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅, Ρ‡Ρ‚ΠΎ дСмонстрируСт этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° послС удалСния элСмСнта выбросит ConcurrentModificationException.

НС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ получится Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ for – ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ нумСрация элСмСнтов Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ.

ЕдинствСнный способ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π΅, Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² ΠΏΡ€ΠΈ этом ConcurrentModificationException ΠΈΠ»ΠΈ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ – ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ remove() Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ инстанса ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ ListIterator ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, Ссли Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° трСбуСтся ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с индСксами.

НСкоторыС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ CopyOnWriteArrayList ΠΈ ConcurrentHashMap Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΡƒΡŽ срСду ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ fail-safe ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.


Java GuruπŸ€“ #java
πŸ‘18❀5πŸ”₯4
Какова структура Java Collections Framework? ΠŸΠΎΡ‡Π΅ΠΌΡƒ Map Π½Π΅ Collection?

Collection – Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Map – Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠžΡ‚ΡΡŽΠ΄Π° Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ этих интСрфСйсов. Если ΠΏΡ€ΠΎΡ‰Π΅, Ρ€Π°Π·Π½Ρ‹Π΅ сигнатуры ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² put ΠΈ add.

Collection Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ дСлится Π½Π° Ρ‚Ρ€ΠΈ основных Π³Ρ€ΡƒΠΏΠΏΡ‹, ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠΌ интСрфСйса:
πŸ”˜ List – упорядочСнныС списки с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ содСрТания Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΈ доступа ΠΏΠΎ индСксу (random access);
πŸ”˜ Queue – ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ FIFO-ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов с края. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ-наслСдник Deque – двусвязная ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ;
πŸ”˜ Set – Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ упорядочСнный Π½Π°Π±ΠΎΡ€ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… (с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния equals) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ;

HashMap ΠΌΠΎΠΆΠ½ΠΎ привСсти ΠΊ Π²ΠΈΠ΄Ρƒ Collection Π²Ρ‹Π·Π²Π°Π² Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ keySet(), entrySet() ΠΈΠ»ΠΈ values().


Java GuruπŸ€“ #java
πŸ‘12πŸ”₯7
Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ HashMap?

Один ΠΈΠ· ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½Π΅ΠΉΡˆΠΈΡ… вопросов, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ содСрТит ΠΌΠ½ΠΎΠ³ΠΎ нюансов. Π›ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ исходного ΠΊΠΎΠ΄Π° HashMap.

ΠΡŽΠ°Π½ΡΡ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стоит ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΈ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ:
πŸ”˜ ΠžΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ: Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ массив table, содСрТащий Π±Π°ΠΊΠ΅Ρ‚Ρ‹ (ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹) – списки элСмСнтов с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ пСрСсчитанными Ρ…ΡΡˆ-суммами;
πŸ”˜ ΠŸΠ΅Ρ€Π΅ΡΡ‡Π΅Ρ‚ Ρ…ΡΡˆ-суммы для умСщСния int индСксов Π² capacity ячСйках table;
πŸ”˜ rehash – ΡƒΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° table ΠΏΡ€ΠΈ достиТСнии threshold (capacity*loadFactor) занятых Π±Π°ΠΊΠ΅Ρ‚ΠΎΠ²;
πŸ”˜ ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΆΠ°Ρ‚ΡŒ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ Ρ€Π°Π·Π΄ΡƒΠ²ΡˆΠΈΠΉΡΡ table;
πŸ”˜ Π”Π²Π° способа Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² HashMap ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° – открытая адрСсация;
πŸ”˜ Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ для ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ использования: пСрСсинхронизированная Hashtable ΠΈ умная ConcurrentHashMap;
πŸ”˜ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Java 8: ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ списка Π² Π±Π°ΠΊΠ΅Ρ‚Π΅ Π² Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΏΡ€ΠΈ достиТСнии 8 элСмСнтов – ΠΏΡ€ΠΈ большом количСствС ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ доступа растСт с O(n) Π΄ΠΎ O(log(n));
πŸ”˜ Π―Π²Π½ΠΎΠ΅ использованиС Π±Π°ΠΊΠ΅Ρ‚Π° 0 для ΠΊΠ»ΡŽΡ‡Π° null;
πŸ”˜ Бвязь с HashSet – HashMap, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ»ΡŽΡ‡ΠΈ;
πŸ”˜ НСт Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ порядка элСмСнтов;

ΠžΠ±ΡΡƒΠΆΠ΄Π°Ρ этот вопрос Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ Π²Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅Ρ‚Π΅ особСнности ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² equals/hashCode. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ придСтся ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ± Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ… ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – TreeMap, LinkedHashMap.


Java GuruπŸ€“ #java
πŸ”₯13πŸ‘8❀2
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΊΠΎΠ΄Π°?
πŸ‘5πŸ”₯2
Как ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Set/Map?

Для Map ΠΌΠΎΠΆΠ½ΠΎ привСсти ΠΊΠ»ΡŽΡ‡ΠΈ/значСния ΠΊ Π²ΠΈΠ΄Ρƒ Collection, ΠΏΠ΅Ρ€Π΅Π»ΠΎΠΆΠΈΡ‚ΡŒ Π² Π½ΠΎΠ²Ρ‹ΠΉ List ΠΈ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Collections.sort. Π’ΠΎ ΠΆΠ΅ дСлаСтся с Set. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ нСэффСктивный, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ копирования содСрТимого.

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ способ – Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΠΆΠ΅ отсортированными. Для Ρ‚Π°ΠΊΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ созданы интСрфСйсы-наслСдники SortedSet ΠΈ SortedMap.

Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ SortedSet Π΄Π°ΡŽΡ‚ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ порядок мноТСства. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ упорядочСны ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ Π»ΠΈΠ±ΠΎ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹ΠΉ (элСмСнты Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ интСрфСйс Comparable), Π»ΠΈΠ±ΠΎ Π΅Π³ΠΎ опрСдСляСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Π² конструктор Comparator.
Π­Ρ‚ΠΎΡ‚ интСрфСйс добавляСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ получСния подмноТСства ΠΎΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта (tailSet), Π΄ΠΎ элСмСнта (headSet), ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя (subSet). ΠŸΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ, Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ.

SortedSet Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ интСрфСйсом NavigableSet для ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ порядку, получСния блиТайшСго снизу (floor), свСрху (ceiling), большСго (higher) ΠΈ мСньшСго (lower) Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ элСмСнта.

ВсС Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ элСмСнтам SortedMap/NavigableMap ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ рСализациями ΡΠ²Π»ΡΡŽΡ‚ΡΡ TreeSet ΠΈ TreeMap. Π’Π½ΡƒΡ‚Ρ€ΠΈ это ΡΠ°ΠΌΠΎΠ±Π°Π»Π°Π½ΡΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ красно-Ρ‡Ρ‘Ρ€Π½Ρ‹Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ. Π˜Ρ… структура ΠΈ способ балансировки – вопрос достойный ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ поста. Другая Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Π°Ρ рСализация ΠΈΠ· java.util.concurrent – ConcurrentSkipListMap.


Java GuruπŸ€“ #java
πŸ‘10πŸ”₯6❀4
Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ immutable-ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ?

Π’ Collections Framework имССтся Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Collections.unmodifiable*() для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ€Π½Π΅Ρ‚ read-only ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΡƒ Π½Π°Π΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ. Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ с Collections.synchronized*(), Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ копия, Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ коллСкция.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Π½Π΅Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ способ – ΠΌΠ΅Ρ‚ΠΎΠ΄ Collections.empty*(). Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΡƒΡΡ‚ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт ΠΊΠ°ΠΊ ΠΈ Π² случаС unmodifiable ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ UnsupportedOperationException.


Java GuruπŸ€“ #java
πŸ‘11πŸ”₯3
Какими коллСкциями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ срСдС?

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ – ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, Π²Ρ‹Π·Π²Π°Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅Π΅ Ρ‚ΠΈΠΏΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Collections.synchronized*(). Π‘Π°ΠΌΡ‹ΠΉ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΈ самый ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ способ, создаСт ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΡƒ с синхронизациСй всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ synchronized.

Если Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ состоит Π² основном ΠΈΠ· чтСния, Π»ΡƒΡ‡ΡˆΠ°Ρ Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° – CopyOnWriteArrayList, ΠΈ содСрТащий Π΅Π³ΠΎ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ CopyOnWriteArraySet. ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ достигаСтся ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ массива ΠΏΡ€ΠΈ любой ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ массив остаСтся immutable. Program order достигаСтся ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ volatile Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ массивС.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ – использованиС Concurrent-ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ:
πŸ”˜ ΠΠ΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ConcurrentSkipListMap, ConcurrentHashMap ΠΈ ConcurrentSkipListSet (Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π° Π² основС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ)
πŸ”˜ ΠΠ΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ConcurrentLinkedQueue ΠΈ ConcurrentLinkedDeque
πŸ”˜ Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ Π½Π°Π±ΠΎΡ€ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ

Java GuruπŸ€“ #java
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘11πŸ”₯3❀2
Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ HashMap сразу с элСмСнтами?

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с созданиСм Map Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ инициализация Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ€ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ varargs здСсь Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚.

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ, многословный, Π½ΠΎ простой способ – Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнты сразу послС создания. Для ΠΌΠ°ΠΏΡ‹-поля класса это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² конструкторС ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Map<String, String> map = new HashMap<>();
{
map.put("one", "first");
map.put("two", "second");
}

Идиома double brace initialization. ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π°Ρ запись, которая Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ компилятором ΠΊΠ°ΠΊ созданиС Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса-наслСдника ΠΎΡ‚ HashMap, с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ элСмСнтов Π² Π±Π»ΠΎΠΊΠ΅ статичСской ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ класса ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹ΠΌ расходам, Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ рСкомСндуСтся.

new HashMap<String, String>() {{
put("one", "first");
put("two", "second");
}};

Для ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… случаСв, пустой ΠΈ одноэлСмСнтной нСизмСняСмых ΠΌΠ°ΠΏ, Π² классС Collections Π΅ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ emptyMap() ΠΈ singletonMap(key, value).

Π£Π΄ΠΎΠ±Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ HashMap ΠΈΠ· стрима. ΠšΠΎΠ»Π»Π΅ΠΊΡ‚ΠΎΡ€ Collectors.toMap(keyMapper, valueMapper) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ°ΠΏΠΏΠ΅Ρ€ΠΎΠ² ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π² ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ значСния.

Π’ Java 9 Π½Π°ΠΊΠΎΠ½Π΅Ρ† появились Ρ„Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Map.of(), ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ для Ρ€Π°Π·Π½ΠΎΠ³ΠΎ количСства ΠΏΠ°Ρ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΈ Map.ofEntries() с varargs-Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ.

Π”ΠΎ Java 9 ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π±Ρ‹Π»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… популярных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ImmutableMap.of Π² Guava ΠΈ MapUtils.putAll() Π² Apache Commons.
πŸ‘6πŸ”₯4❀2
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΊΠΎΠ΄Π°?
πŸ”₯4πŸ‘2